Day07-面向对象-封装课后练习以及参考答案

文章目录

  • 巩固题
    • 包练习
    • 成员变量基础题
      • 第1题:员工
      • 第2题:日期类
    • 成员方法基础题
      • 第3题:三角形
      • 第4题:日期类
      • 第5题:数组工具类
  • 拔高题
      • 第6题:公民类
      • 第7题:数组工具类

巩固题

包练习

每道作业题可以单独一个包。

在这里插入图片描述

成员变量基础题

第1题:员工

案例需求:

(1)声明员工类Employee,包含属性:编号、姓名、年龄、薪资,

(2)在测试类的main方法中,创建2个员工对象,并为属性赋值,并打印两个员工的信息。

在这里插入图片描述

参考答案:

package com.atguigu.homework1;public class Employee {int id;String name;int age;double salary;
}
package com.atguigu.homework1;public class TestEmployee {public static void main(String[] args) {Employee emp1 = new Employee();emp1.id = 1;emp1.name = "张三";emp1.age = 23;emp1.salary = 10000;Employee emp2 = new Employee();emp2.id = 2;emp2.name = "李四";emp2.age = 22;emp2.salary = 11000;System.out.println("第1个员工的编号:" + emp1.id +",姓名:" + emp1.name + ",年龄:" + emp1.age + ",薪资:" + emp1.salary);System.out.println("第2个员工的编号:" + emp2.id +",姓名:" + emp2.name + ",年龄:" + emp2.age + ",薪资:" + emp2.salary);}
}

第2题:日期类

案例需求:

(1)声明一个日期类MyDate,包含属性:年、月、日

(2)在测试类的main方法中,创建3个日期对象,一个是你的出生日期,一个是来尚硅谷的日期,一个是毕业的日期,并打印显示

参考答案:

package com.atguigu.homework2;public class MyDate {int year;int month;int day;
}
package com.atguigu.homework2;public class TestMyDate {public static void main(String[] args) {MyDate bir = new MyDate();bir.year = 1995;bir.month = 5;bir.day = 5;System.out.println("生日:" + bir.year + "年" + bir.month + "月" + bir.day + "日");MyDate come = new MyDate();come.year = 2021;come.month = 5;come.day = 12;System.out.println("来尚硅谷:" + come.year + "年" + come.month + "月" + come.day + "日");MyDate go = new MyDate();go.year = 2021;go.month = 10;go.day = 25;System.out.println("毕业:" + go.year + "年" + go.month + "月" + go.day + "日");}
}

成员方法基础题

第3题:三角形

案例需求:

(1)声明一个三角形类Triangle,包含属性:a,b,c,都是double类型,表示三条边,包含几个方法:

  • boolean isTriangle():判断是否是一个三角形

  • boolean isRightTriangle():判断是否是一个直角三角形

  • boolean isIsoscelesTriangle():判断是否是一个等腰三角形

  • boolean isEquilateralTriangle():判断是否是一个等边三角形

  • double area():根据三条边,用海伦公式求面积

  • double perimeter():求周长

(2)在测试类的main方法中创建三角形对象,将三角形的三条边设置为3,4,5,调用方法测试。

参考答案:

package com.atguigu.homework3;public class Triangle {double a;double b;double c;boolean isTriangle(){return a>0 && b>0 && c>0 && a+b>c && b+c>a && a+c>b;}boolean isRightTriangle(){return isTriangle() && (a*a + b*b == c*c || a*a + c*c == b*b || b*b + c*c == a*a);}boolean isEquilateralTriangle(){return isTriangle() && a == b && b == c;}boolean isIsoscelesTriangle(){return isTriangle() && (a == b || a == c || b == c);}double perimeter(){if(!isTriangle()){return 0.0;}return a + b + c;}double area(){if(!isTriangle()){return 0.0;}double p = a + b + c;return Math.sqrt(p * (p-a) * (p-b) * (p-c));}
}
package com.atguigu.homework3;public class TestTriangle {public static void main(String[] args) {Triangle t1 = new Triangle();t1.a = 3;t1.b = 4;t1.c = 5;System.out.println("t1是三角形吗?" + t1.isTriangle());System.out.println("t1是直角三角形吗?" + t1.isRightTriangle());System.out.println("t1是等腰三角形吗?" + t1.isIsoscelesTriangle());System.out.println("t1是等边三角形吗?" + t1.isEquilateralTriangle());System.out.println("t1的周长:" + t1.perimeter());System.out.println("t1的面积:" + t1.area());}
}

第4题:日期类

案例需求:

(1)声明一个日期类MyDate,

  • 包含属性:年、月、日
  • boolean isLeapYear():判断是否是闰年
  • String monthName():根据月份值,返回对应的英语单词
  • int totalDaysOfMonth():返回这个月的总天数
  • int totalDaysOfYear():返回这一年的总天数
  • int daysOfTheYear():返回这一天是当年的第几数

(2)在测试类的main方法中,创建MyDate对象,赋值为当天日期值,调用方法测试。

参考答案:

package com.atguigu.homework4;public class MyDate {int year;int month;int day;boolean isLeapYear(){return year%4==0 && year%100!=0 || year%400==0;}int totalDaysOfYear(){return isLeapYear() ? 366 : 365;}int totalDaysOfMonth(){if(month == 4 || month == 6 || month == 9 || month == 11){return 30;}if(month == 2){return isLeapYear() ? 29 : 28;}return 31;}int daysOfTheYear(){int days = day;for(int i=1; i<month; i++){if(i==2){days += isLeapYear() ? 29 : 28;}else if(i==4 || i==6 || i==9 || i==11){days += 30;}else{days += 31;}}return days;}String monthName(){String[] monthNames = {"January","February","March","April","May","June","July","August","September","October","November","December"};return monthNames[month-1];}
}
package com.atguigu.homework4;public class TestMyDate {public static void main(String[] args) {MyDate my = new MyDate();my.year = 2021;my.month = 12;my.day = 29;System.out.println("今年是闰年吗?" + my.isLeapYear());System.out.println("月份名是" + my.monthName());System.out.println("这个月总天数:" + my.totalDaysOfMonth());System.out.println("这一年总天数:" + my.totalDaysOfYear());System.out.println("这一天是这一年的几天?" + my.daysOfTheYear());}
}

第5题:数组工具类

案例需求:

(1)声明一个数组工具类ArrayTools,包含如下方法:

  • int sum(int[] arr):求所有元素总和
  • int max(int[] arr):求所有元素的最大值
  • int indexOf(int[] arr, int value):查找value在arr数组中第一次出现的下标,如果不存在返回-1
  • int lastIndexOf(int[] arr, int value):查找value在arr数组中最后一次出现的下标,如果不存在返回-1

(2)在测试类的main方法中,调用方法测试,例如:

int[] arr = {1,2,10,4,5,10,7,8,9,10};

参考答案:

package com.atguigu.homework5;public class ArrayTools {int sum(int[] arr){int sum = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}return sum;}int max(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}return max;}int indexOf(int[] arr, int value){for(int i=0; i<arr.length; i++){if(arr[i] == value){return i;}}return -1;}int lastIndexOf(int[] arr, int value){for(int i=arr.length-1; i>=0;  i--){if(arr[i] == value){return i;}}return -1;}
}
package com.atguigu.homework5;public class ArrayToolsTest {public static void main(String[] args) {ArrayTools tools = new ArrayTools();int[] arr = {1,2,10,4,5,10,7,8,9,10};System.out.println("元素总和:" + tools.sum(arr));System.out.println("最大值:" + tools.max(arr));System.out.println("第1次出现10的下标:" + tools.indexOf(arr, 10));System.out.println("最后1次出现10的下标:" + tools.lastIndexOf(arr, 10));System.out.println("第1次出现3的下标:" + tools.indexOf(arr,3));}
}

拔高题

第6题:公民类

案例需求:

(1)声明一个日期类MyDate,

  • 包含属性:年、月、日,
  • 包含String dateToString()方法,返回“xxxx年xx月xx日”

(2)声明公民类Citizen,

  • 包含属性:姓名,生日,身份证号,其中姓名是String类型,生日是MyDate类型,身份证号也是String类型。
  • 包含String getInfo()方法,返回“姓名:xx,身份证号码:xx,生日:xxxx年xx月xx日”
  • 包含void setBirthday(int year, int month, int day):设置生日

(3)在测试类的main方法中,创建你们家庭成员的几个对象,并打印信息。

参考答案:

package com.atguigu.homework6;public class MyDate {int year;int month;int day;String dateToString(){return year + "年" + month + "月" + day + "日";}
}
package com.atguigu.homework6;public class Citizen {String name;String cardId;MyDate birthday;void setBirthday(int year, int month, int day){birthday = new MyDate();birthday.year = year;birthday.month = month;birthday.day = day;}String getInfo(){return "姓名:" + name +",身份证号码:" + cardId + ",生日:" + birthday.dateToString();}
}
package com.atguigu.homework6;public class TestCitizen {public static void main(String[] args) {Citizen citizen = new Citizen();citizen.name = "张三";citizen.cardId = "110250199512012535";citizen.setBirthday(1995,12,1);System.out.println(citizen.getInfo());}
}

第7题:数组工具类

案例需求:

(1)声明一个数组工具类ArrayTools,包含如下方法:

  • int max(int[] arr):求所有元素的最大值
  • int valueCount(int[] arr, int value):查找value在arr数组中出现的次数,如果不存在返回0
  • int[] maxIndex(int[] arr):找出所有最大值
  • void sort(int[] arr):实现元素从小到大排序
  • void reverse(int[] arr, int start, int end):反转[start,end]范围内的元素
  • int[] copyOf(int[] arr, int newLength):复制arr数组,新数组的长度newLength。如果newLength<=arr.length,则复制arr数组的[0, newLength-1]范围的元素,如果newLength>arr.length,则复制arr数组的所有元素到新数组,剩下的元素则默认就可以。
  • boolean equals(int[] arr1, int[] arr2):判断两个数组的长度和元素是否都相等,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。
  • void fill(int[] arr, int start, int end, int value) :将arr数组[start,end]范围的元素赋值为value。
  • String toString(int[] arr):将元素拼接为"{元素1,元素2,…}"的字符串返回。

(2)在测试类的main方法中,调用方法测试例如:

int[] arr = {1,2,10,4,5,10,7,8,9,10};

参考答案:

package com.atguigu.homework7;public class ArrayTools {int max(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}return max;}int valueCount(int[] arr, int value){int count = 0;for (int i = 0; i < arr.length; i++) {if(arr[i] == value){count ++;}}return count;}int[] maxIndex(int[] arr){int max = max(arr);int count = valueCount(arr, max);int[] all = new int[count];for (int i = 0,j = 0; i < arr.length; i++) {if(arr[i] == max) {all[j++] = i;}}return all;}void sort(int[] arr){for (int i = 1; i < arr.length; i++) {for (int j = 0; j < arr.length-i; j++) {if(arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}void reverse(int[] arr, int start, int end){for(int i=0; i<(end-start)/2; i++){int temp = arr[i+start];arr[i+start] = arr[end-i];arr[end-i] = temp;}}int[] copyOf(int[] arr, int newLength){int[] newArr = new int[newLength];for (int i = 0; i < newArr.length && i<arr.length; i++) {newArr[i] = arr[i];}return newArr;}boolean equals(int[] arr1, int[] arr2){if(arr1.length != arr2.length){return false;}for (int i = 0; i < arr1.length; i++) {if(arr1[i] != arr2[i]){return false;}}return true;}void fill(int[] arr, int start, int end, int value){for (int i = start; i <= end; i++) {arr[i] = value;}}String toString(int[] arr){String result = "{";for (int i = 0; i < arr.length; i++) {if(i<arr.length-1){result += arr[i] + ",";}else{result += arr[i];}}result += "}";return result;}
}
package com.atguigu.homework7;public class ArrayToolsTest {public static void main(String[] args) {ArrayTools tools = new ArrayTools();int[] arr = {1,2,10,4,5,10,7,8,9,10};System.out.println("arr数组为:" +tools.toString(arr));int maxValue = tools.max(arr);System.out.println("arr数组中的最大值:" + maxValue);System.out.println("最大值的个数:" + tools.valueCount(arr,maxValue));int[] indexs = tools.maxIndex(arr);System.out.println("所有最大值下标:" + tools.toString(indexs));tools.sort(arr);System.out.println("排序后arr:" + tools.toString(arr));tools.reverse(arr, 1,5);System.out.println("反转[1,5]下标范围的元素后:"+ tools.toString(arr));int[] before = tools.copyOf(arr, 5);System.out.println("复制前面5个元素:" + tools.toString(before));int[] doubleArr = tools.copyOf(arr, arr.length*2);System.out.println("arr的两倍大数组:" + tools.toString(doubleArr));tools.fill(doubleArr, arr.length, doubleArr.length-1, 6);System.out.println("doubleArr新扩展的元素用6填充后:" + tools.toString(doubleArr));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/263821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

12 个顶级音频转换器软件(免费)

当涉及不受支持的音乐文件时&#xff0c;音频文件转换器软件总是会派上用场。当您希望缩小大量大型音乐文件的大小以节省设备存储空间时&#xff0c;它也很有帮助。您在寻找传输音频的软件吗&#xff1f;好吧&#xff0c;请仔细选择音频转换器&#xff0c;因为最好的音乐转换器…

C语言数据存储

目录 一.数据类型的介绍 &#xff08;1&#xff09;整形家族 &#xff08;2&#xff09;浮点型家族 &#xff08;3&#xff09;构造类型 &#xff08;4&#xff09;其他 二.整形在内存中如何进行存储 &#xff08;1&#xff09;原&#xff0c;反&#xff0c;补 &#xf…

《Docker 简易速速上手小册》第1章 Docker 基础入门(2024 最新版)

文章目录 1.1 Docker 简介与历史1.1.1 Docker 基础知识1.1.2 重点案例&#xff1a;Python Web 应用的 Docker 化1.1.3 拓展案例 1&#xff1a;使用 Docker 进行 Python 数据分析1.1.4 拓展案例 2&#xff1a;Docker 中的 Python 机器学习环境 1.2 安装与配置 Docker1.2.1 重点基…

k8s-hpa控制器 16

hpa可通过metrics-server所提供pod的cpu或者内存的负载情况&#xff0c;从而动态拉伸控制器的副本数&#xff0c;从而达到后端的自动弹缩 官网&#xff1a;https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscalewalkthrough/ 上传镜像 创建hpa实例 …

Java语言实现学生成绩排序问题

目录 题目&#xff1a; 代码展示&#xff1a; Student类 TestStudent类 运行结果 ​编辑 题目&#xff1a; 给定一段字符串,里面包含若干个学生上机和笔试成绩如 String str "张三:上机成绩90,笔试成绩78; 李四:上机成绩68,笔试成绩98; …

React18源码: reconcliler启动过程

Reconcliler启动过程 Reconcliler启动过程实际就是React的启动过程位于react-dom包&#xff0c;衔接reconciler运作流程中的输入步骤.在调用入口函数之前&#xff0c;reactElement(<App/>) 和 DOM对象 div#root 之间没有关联&#xff0c;用图片表示如下&#xff1a; 在启…

反序列化字符串逃逸 [安洵杯 2019]easy_serialize_php1

打开题目 $_SESSION是访客与整个网站交互过程中一直存在的公有变量 然后看extract()函数的功能&#xff1a; extract($_POST)就是将post的内容作为这个函数的参数。 extract() 函数从数组中将变量导入到当前的符号表(本题的作用是将_SESSION的两个函数变为post传参) function…

C++ //练习 8.9 使用你为8.1.2节(第281页)第一个练习所编写的函数打印一个istringstream对象的内容。

C Primer&#xff08;第5版&#xff09; 练习 8.9 练习 8.9 使用你为8.1.2节&#xff08;第281页&#xff09;第一个练习所编写的函数打印一个istringstream对象的内容。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*****…

爬虫知识--03

数据存mysql import requests from bs4 import BeautifulSoup import pymysql# 链接数据库pymysql conn pymysql.connect(userroot,password"JIAJIA",host127.0.0.1,databasecnblogs,port3306, ) cursor conn.cursor() cursor conn.cursor()# 爬数据 res request…

ChatGPT Plus遇到订阅被拒原因与解决方案

ChatGPT Plus被广泛认为相比普通版本更快、更强&#xff0c;并且能最先体验新功能。 很多小伙伴再订阅时遇到图片中的问题 错误提示包括这些&#xff1a; Your credit card was declined.Try paying with a debit card instead.您的信用卡被拒绝了。请尝试用借记卡支付。你的…

Android 圆环带刻度条进度动画效果实现

效果图 需求是根据传感器做一个重力球效果&#xff0c;先实现了动画后续加上跟传感器联动. 又是摆烂的一天&#xff0c; 尚能呼吸&#xff0c;未来可期啊 View源码 package com.android.circlescalebar.view;import android.content.Context; import android.content.res.Typ…

【Crypto | CTF】BugKu 简单的RSA

天命&#xff1a;这题也不算简单了&#xff0c;要反编译&#xff0c;要灵活一点 首先收到pyc文件&#xff0c;拿去反编译出来&#xff0c;可以用在线反编译&#xff0c;也可以用工具反编译 在线&#xff1a;python反编译 - 在线工具 工具&#xff1a;https://download.csdn.n…

RocketMQ快速实战以及集群架构原理详解

RocketMQ快速实战以及集群架构原理详解 组成部分 启动Rocket服务之前要先启动NameServer NameServer 提供轻量级Broker路由服务&#xff0c;主要是提供服务注册 Broker 实际处理消息存储、转发等服务的核心组件 Producer 消息生产者集群&#xff0c;通常为业务系统中的一个功…

华清远见作业第四十一天——Qt(第三天)

思维导图&#xff1a; 编程 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如…

利用iSCSI服务部署IP SAN网络存储服务

一、配置环境&#xff08;Vmware WorkStation虚拟环境&#xff09; 服务端与客户端OS&#xff1a;openEuler 22.03-LTS CPU&#xff1a;1U1C 内存&#xff1a;2G 硬盘&#xff1a;5个SCSI磁盘&#xff0c;其中一个作为系统盘&#xff0c;另外四个配置为RAID5阵列 服务器IP…

【黑马程序员】1、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址&#xff1a;【黑马程序员前端TypeScript教程&#xff0c;TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 1、TypeScript介绍 1.1 TypeScript是什…

React 模态框的设计(三)拖动组件的完善

我在上次的Draggable组件的设计中给了一个简化的方法&#xff0c;今天我来完善一下这个组件&#xff0c;可用于任何可移动组件的包裹。完善后的效果如下所示&#xff1a; 这个优化中&#xff0c;增加了一个注目的效果&#xff0c;还增加了触发可拖动区域的指定功能&#xff0c;…

pikachu靶场-RCE

介绍&#xff1a; RCE(remote command/code execute)概述 RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入操作系统命令或者代码&#xff0c;从而控制后台系统。 远程系统命令执行 一般出现这种漏洞&#xff0c;是因为应用系统从设计上需要给用户提供指定的远程命…

2024“薪”风口、学习鸿蒙开发就业钱景如何?

随着华为的鸿蒙系统从诞生之初就备受关注&#xff0c;对于那些对鸿蒙开发感兴趣并希望在这一领域寻找职业发展的人来说&#xff0c;这是一个非常重要的问题。 那么&#xff0c;2024年学鸿蒙开发的就业前景如何呢&#xff1f; 一、彻底摆脱“安卓套壳”&#xff01; HarmonyO…

我用Python写了一个倒计时软件

人过中年&#xff0c;每天都觉得时间过得很快&#xff0c;忙活了一天却发现自己很多时候是瞎忙&#xff0c;似乎没有什么成效&#xff0c;匆忙中一天就过去了。 后来&#xff0c;我想想可能是我没有时间的紧迫感&#xff0c;或者说没有明确的目标和执行力&#xff0c;所以才会…