# java **Repository Path**: the-west-gate-is-quiet/java ## Basic Information - **Project Name**: java - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-09-23 - **Last Updated**: 2022-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java作业 ## README ## 第一次作业 ### 1.求 Fibonacci 数列,1、2、3、5、8、13….. 前 10 项数的和 ### 2. 杨辉三角形(具有 10 行)的输出 ### 3. 水仙花数的输出 100-999 之间的水仙花数。水仙花数定义:个位数的立方 + 十位数的立方 + 百位数的立方 = 数字本身;如:153=1*1*1+5*5*5+3*3*3=1+125+27。 ### 4.输出出现如下图形 ``` * *** ***** *** * ``` ### 5. 从键盘输入两个数 a、b 求出其最大公约数和最小公倍数 从键盘上输入整数的格式如下: ```java Scanner input = new Scanner(System.in); System.out.print(" 正数 a="); m = input.nextInt(); System.out.print(" 正数 b="); n = input.nextInt(); ``` ### 6.输出 100 以内的所有素数 ### 7.有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少 ### 8.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13... 求出这个数列的前 20 项之和 ### 9. 求值 已知 S=1-1/2+1/3-...+1/n-1/(n+1),利用 while 循环编程求解 n=100 时的 S 的值。 ### 10.一个数如果恰好等于它的因子之和,这个数就称为 “完数”。 例如 6=1+2+3. 编程找出 1000 以内的所有完数。 ## 第二次作业 ### 1.几何 正 n 边形 在一个正 n 边形中,所有边的长度都相同,且所有角的度数都相同(即这个多边形是等边等角的)。设计一个名为 RegularPo1ygon 的类, 该类包括: - 一个名为 n 的 int 型私有数据域定义多边形的边数,默认值为 3。 - 一个名为 side 的 double 型私有数据域存储边的长度,默认值为 1 。 - 一个名为 x 的 double 型私有数据域定义多边形中点的 x 坐标, 默认值为 0 。 - 一个名为 y 的 double 型私有数据域定义多边形中点的 y 坐标, 默认值为 0 。 - 一个创建带默认值的正多边形的无参构造方法。 - 一个能创建带指定边数和边长度、中心在(0 , 0) 的正多边形的构造方法。 - 一个能创建带指定边数和边长度、中心在 (x,y) 的正多边形的构造方法。 - 所有数据域的访问器和修改器。 - 一个返回多边形周长的方法 **getPerimeterO**。 - 一个返回多边形面积的方法 **getAreaO**。 计算正多边形面积的公式是: $$ 面积=(n*s^2)/4*tan(π/n) $$ 编写一个测试程序,分别使用无参构造方法、**RegularPo1ygon (6, 4)** 和 **RegularPo1ygon (10, 4, 5. 6, 7. 8)** 创建三个 **RegularPo1ygon** 对象。显示每个对象的周长和面积。 ### 2.代数 2 x2 的线性方程 为一个 2 x 2 的线性方程设计一个名为 LinearEquation 的类: $$ ax+by=e\\\cx+by=f\\\x=(ed-bf)/(ad-bc)\\\y=(af-ec)/(ad-bc)\\ $$ 这个类包括: • 私有数据域 a、b、 c、d、e 和 f 。 • 一个参数为 a、b、 c、d 、e、f 的构造方法。 • a、b、c、d 、e、f 的六个 get 方法。 • 一个名为 **isSolvable()** 的 方 法,如 果 不 为 0 则 返 回 true。 • 方 法 **getX()** 和 **getY()** 返回这个方程的解。 编写一个测试程序, 提示用户输入 a、 b 、 c、 d 、 e 、 f 的值,然后显示它的结果。如果 ad-bc 为 0,就报告 “The equation has no solution.”。 ### 3.几何 交点 假设两条线段相交。第一条线段的两个端点是 (xl , yl) 和(x2 , y2) , 第二条线段的两个端点是(x3 , y3) 和(x4,y4)。编写一个程序,提示用户输人这四个端点,然后显示它们的交点。可以通过对一个线性方程求解来得到。 使用编程练习题 2 中的 **LinearEquation** 类来求解该方程。 ## 第三次作业 ### 1.类的继承 > 定义一个名为 **Vehicles** 交通工具 的基类 该类中应包含 String 类型的成员属性 brand 商标 和 color 颜色 还应包含成员方法 **run** 行驶 在控制台显示 “我已经开动了” 和 **showInfo** 显示信息 在控制台显示商标和颜色 并编写构造方法初始化其成员属性。 > 编写 **Car** 小汽车 类继承于 **Vehicles** 类 增加 **int** 型成员属性 **seats** 座位 还应增加成员方法 **showCar** 在控制台显示小汽车的信息 并编写构造方法。 编写 **Truck** 卡车 类继承于 **Vehicles** 类 增加 **float** 型成员属性 **load** 载重 还应增加成员方法 **showTruck** 在控制台显示卡车的信息 并编写构造方法。 在 main 方法中测试以上各类。 ### 2.覆盖、继承 建立一个汽车 **Auto** 类 包括轮胎个数 汽车颜色 车身重量、速度等成员变量。并通过不同的构造方法创建实例。至少要求 汽车能够加速 减速 停车。 再定义一个小汽车类 **Car** 继承 **Auto** 并添加空调、CD 等成员变量 覆盖加速 减速的方法 ### 3.抽象类与继承 设计一个能细分为矩形、三角形、圆形和椭圆形的 “图形” 类。使用继承将这些图形分类 找出能作为基类部分的共同特征 (如校准点) 和方法 (如画法、初始化) 并看看这些图形是否能进一步划分为子类。 本题只考虑实现思想 不考虑具体实现的细节 实现方式可自由发挥。 ### 4.抽象类 创建一个 **Vehicle** 类并将它声明为抽象类。在 Vehicle 类中声明一个 **NoOfWheels** 方法 使它返回一个字符串值。创建两个类 **Car** 和 **Motorbike** 从 **Vehicle** 类继承 并在这两个类中实现 **NoOfWheels** 方法。在 **Car**类中 应当显示 “四轮车” 信息 而在 Motorbike 类中 应当显示 “双轮车” 信息。创建另一个带 **main** 方法的类 在该类中创建 **Car** 和 **Motorbike** 的实例 并在控制台中显示消息。 ### 5.接口 创建一个名称为 **Vehicle** 的接口 在接口中添加两个带有一个参数的方法 **start()** 和 **stop()**。在两个名称分别为 **Bike** 和 **Bus** 的类中实现 **Vehicle** 接口。创建一个名称为 **interfaceDemo** 的类 在 **interfaceDemo** 的 **main()** 方法中创建 **Bike** 和 **Bus** 对象 并访问 **start()** 和 ** stop()** 方法。 ### 6.匿名内部类 - 匿名内部类顾名思义就是没有名字的内部类。 - 因为没有名字,所以匿名内部类只可以使用一次。 - 匿名内部类常用来简化代码的编写。 - 使用内部类有一个前提条件,必须继承父类或实现一个接口。 - 匿名内部类常常用于多线程。 ### 7.异常类 Exception 一般分为 Checked 异常和 Runtime 异常,所有 RuntimeException 类及其子类的实例被称为 Runtime 异常,不属于该范畴的异常则被称为 CheckedException。 ①Checked 异常 只有 java 语言提供了 Checked 异常,Java 认为 Checked 异常都是可以被处理的异常,所以 Java 程序必须显示处理 Checked 异常。如果程序没有处理 Checked 异常,该程序在编译时就会发生错误无法编译。这体现了 Java 的设计哲学:没有完善错误处理的代码根本没有机会被执行。对 Checked 异常处理方法有两种 1 当前方法知道如何处理该异常,则用 try...catch 块来处理该异常。 2 当前方法不知道如何处理,则在定义该方法是声明抛出该异常。 ②RuntimeException Runtime 如除数是 0 和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。 ## 第四次作业 ### 1.编程实现如下功能: 从控制台输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。其中,从控制台获得输入的代码参考如下: ```java Scanner scan=new Scanner(System.in); String str=scan.nextLine(); ``` 提示:使用 String 类和 Character 类的相应方法来实现。 ```java package experiment01; import java.util.Scanner; /** 从控制台输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。其中,从控制台获得输入的代码参考如下: * Scanner scan = new Scanner(System.in); * String str = scan.nextLine(); * 提示:使用String类和Character类的相应方法来实现 */ public class CharacterStatistics { public static void main(String[] args) { System.out.println("请输入字符串:"); //扫描器,接受控制台的输入 Scanner scan = new Scanner(System.in); //取出控制台的一行信息 String scanStr = scan.nextLine(); int countL = 0; int countD = 0; int countS = 0; int countA = 0; //将接收到的字符串变成字符数组 char[] scanChar = scanStr.toCharArray(); for (int i = 0; i < scanChar.length; i++) { if (Character.isLetter(scanChar[i])) { countL++; } else if (Character.isDigit(scanChar[i])) { countD++; } else if (Character.isSpaceChar(scanChar[i])) { countS++; } else { countA++; } } //汉字也算做了字符 System.out.println("中英文字母个数:" + countL); System.out.println("数字个数:" + countD); System.out.println("空格个数:" + countS); System.out.println("其他字符个数:" + countA); } } ``` ### 2利用 Random 类来产生 5 个 20 到 50 之间的随机数。 [n-m] (n,m 均为整数,n 小于 m) 之间的随机数的公式为 n+(new Random ()).nextInt (m-n+1)。 ```java package experiment02; import java.util.Random; /** * 提示:[n-m] (n,m 均为整数,n 小于 m) 之间的随机数的公式为 n+(new Random ()).nextInt (m-n+1)。 */ public class Randomtest { public static void main(String[] args) { Random random = new Random(); for (int i = 0; i < 5; i++) { System.out.println(random.nextInt(30) + 20); } } } ``` ### 3.计算从今天算起,100 天以后是几月几号,并格式化成 ×××× 年 × 月 × 日的形式打印出来。 可以去查看 Date 类,Calendar 类,和 DateFormat 类的用法完成本程序。其中,调用 Calendar 类的 add () 方法计算 100 天后的日期;调用 Calendar 类的 getTime () 方法返回 Date 类型对象;使用 FULL 格式的 DateFormat 对象,调用 format () 方法格式化 Date 对象。 ```java package experiment03; import java.text.DateFormat; import java.util.Calendar; import java.util.Date; /**提示:可以去查看 Date 类,Calendar 类,和 DateFormat 类的用法完成本程序。 其中,调用 Calendar 类的 add () 方法计算 100 天后的日期;调用 Calendar 类的 getTime () 方法返回 Date 类型对象; 使用 FULL 格式的 DateFormat 对象,调用 format () 方法格式化 Date 对象。 */ public class Time { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.add(calendar.DATE, 100); Date date = calendar.getTime(); DateFormat format = DateFormat.getDateInstance(DateFormat.FULL); String str = format.format(date); System.out.println(str); } } ``` ## 第五次作业 ### 1.编写程序练习 List 集合的基本使用 1.创建一个只能容纳 String 对象名为 names 的 ArrayList 集合; 2.按顺序往集合中添加 5 个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”; 3.对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4.首先打印集合的大小,然后删除集合中的第 3 个元素,并显示删除元素的内容,然后再打印目前集合中第 3 个元素的内容,并再次打印集合的大小。 ```java package experiment01; /** * 1) 创建一个只能容纳 String 对象名为 names 的 ArrayList 集合; * 2)按顺序往集合中添加 5 个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”; * 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; * 4)首先打印集合的大小,然后删除集合中的第 3 个元素,并显示删除元素的内容,然后再打印目前集合中第 3 个元素的内容,并再次打印集合的大小。 */ import java.util.ArrayList; public class listtest { public static void main(String[] args) { ArrayList names = new ArrayList(); names.add("张三"); names.add("李四"); names.add("王五"); names.add("马六"); names.add("赵七"); for (int i = 0; i < names.size(); i++) { System.out.println("第" + (i + 1) + "个元素:" + names.get(i)); } int aaa = 3; System.out.println("删除前集合大小" + names.size()); System.out.println("删除的元素是" + names.remove(aaa - 1)); System.out.println("当前第" + aaa + "个元素是" + names.get(aaa - 1)); System.out.println("删除后集合大小" + names.size()); } } ``` ### 2.编写程序练习 Map 集合的基本使用 1.创建一个只能值只能容纳 String 对象的 person 的 HashMap 集合; 2.往集合中添加 5 个 “键-值” 对象:id—>”1”、name—>” 张三”、sex—>” 男”、age—>”25”、love—>” 爱学 Java” 3.对集合进行遍历,分别打印集合中的每个元素的键与值; 4.首先打印集合的大小,然后删除集合中的键为 age 的元素,并显示删除元素的内容,并再次打印集合的大小。 ```java package experiment02; import java.util.HashMap; import java.util.Iterator; import java.util.Set; /** * 1)创建一个只能值只能容纳 String 对象的 person 的 HashMap 集合; * 2)往集合中添加 5 个 “键-值” 对象:id—>”1”、name—>” 张三”、sex—>” 男”、age—>”25”、love—>” 爱学 Java” * 3)对集合进行遍历,分别打印集合中的每个元素的键与值; * 4)首先打印集合的大小,然后删除集合中的键为 age 的元素,并显示删除元素的内容,并再次打印集合的大小。 */ public class maptest { public static void main(String[] args) { HashMap person = new HashMap(); person.put("id", "1"); person.put("name", "张三"); person.put("sex", "男"); person.put("age", "25"); person.put("love", "爱学Java"); Set keyset = person.keySet(); Iterator it = keyset.iterator(); /*遍历集合*/ while (it.hasNext()) { Object key = it.next(); Object value = person.get(key); System.out.println("键:" + key + "\t元素:" + value); } System.out.println("删除前集合长度" + person.size()); System.out.println("删除的元素是" + person.remove("age")); System.out.println("删除后集合长度" + person.size()); } } ```