Java编程练习_241206

1 动物王国

请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口AnimalInfo,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口AnimalInfo里的方法输出一条有语句“鸟儿飞翔”,重写父类的eat() 方法输出一条语句“鸟儿吃虫”。

创建Test类并添加main方法,在main方法中添加如下功能

(1)创建Animal类的对象并调用eat( )方法;

(2)使用父类引用Bird类的对象,并调用eat( )方法;

(3)使用接口引用Bird类的对象,并调用fly( )方法;

(4)使用Bird类引用Bird类的对象,调用eat( )方法和fly( )方法。

PS:父类=超类=基类、字段=成员变量=属性、构造器=构造方法

输出结果如下:

吃东西
鸟儿吃虫
鸟儿飞翔
鸟儿吃虫
鸟儿飞翔

2 学生与工人

编写一个Person抽象类,要求含有姓名(name)、年龄(age)两个私有属性以及吃饭(eat)和睡觉(sleep)两个抽象方法,并添加带参构造方法为name和age赋初值。

创建学生(Student)类并继承Person类,学生类多出了私有属性学号学习方法(输出我爱学习)。

创建工人(Worker)类并继承Person类,工人类多出了私有属性工号工作方法(输出我爱工作),

在主函数中创建学生和工人类的实例对象,使用构造方法赋值,并输出所有属性和方法。

输出结果如下: 

姓名:张三,年龄:20,学号:1024
食堂吃饭
我爱学习
在宿舍睡觉
姓名:李四,年龄:35,工号:1025
自己做饭
我爱工作
在家睡觉

3 超级跑车

请创建一个Car抽象类,要求有brand(品牌)属性,并且要求封装私有化,写出属性的settergetter方法。抽象类Car构造方法中也可以对brand属性赋值,定义抽象方法run()。创建一个跑车类SportsCar继承抽象类Car。实现Car抽象方法输出一条语句“超级跑车”,在本类中写出一个自己的方法price(),输出一条语句“售价100w”。
在测试类Test类中创建跑车对象car1,用构造器赋值品牌属性,输出属性,调用run()price()方法。创建跑车car2,用set方法赋值属性,输出属性,调用run()price()方法。

输出结果如下:

法拉利
超级跑车
售价100W
兰博基尼
超级跑车
售价100W

4 管状灯

(1)编写1个Light类,该类是对灯的描述,该类拥有:
1)2个成员变量
     watts(私有,整型);//用于存放灯的瓦数;
     indicator(私有,布尔类型);//用于存放灯的开或关的状态
    2) 2个构造器方法
     Light(int watts) //用于创建具有watts瓦的对象
     Light(int watts,boolean indicator) //用于创建具有watts瓦,开关状态为indicator的对象
3) 3个成员方法
     public void switchOn()   //开灯,即将灯的状态置为开
     public void switchOff()  //关灯
     public void printInfo()  //输出灯的瓦数信息和开关状态

(2)编写1个TubeLight类,该类是对管状灯的描述,它继承于Light类。还拥有:
1) 2个成员变量
     tubeLength(私有,整型)  //用于存放灯管的长度
     color(私有,String类型)  //用于存放灯光的颜色
    2) 构造器方法
     TubeLight(int watts, int tubeLength,String color)  //用于创建具有watts瓦,灯管长度为tugeLength,颜色为color的对象
    3)成员方法
     public void printInfo()  //打印输出灯的相关信息,包括瓦数、开关信息、长度以及颜色

(3)请写一个测试程序,要求:
1)创建一个管状灯的实例对象,
2)打印输出该灯的相关信息。

输出结果如下:

该灯瓦数为:32;状态为开;长度为50;白色灯光。

5 猜数字游戏

猜数字游戏,其游戏规则为:程序内自动生成一个 1 到 100 之间的数字作为猜测的结果,由用户猜测此数字。用户每猜测一次,由系统提示猜测结果:大了、小了或者猜对了。玩家最多猜5次,猜对结果,则提示You Win,没猜对则提示Game Over。用户可以提前退出游戏,即,游戏过程中,如果用户录入数字0,则游戏终止并提示放弃游戏。

要求:

  1. 创建Game类,在Game类中创建私有成员变量num。
  2. 在Game类中创建构造方法,并在构造方法中使用随机数类为num赋值。
  3. 在Game类中创建play方法,在方法中使用循环进行大,小,猜对的判断。输出并返回相关的提示信息。
  4. 创建Test类,在Test类中添加main入口方法,在方法中实例化Game类,并调用play方法进行游戏。

模拟输入输出结果如下:

50
小了
75
大了
62
小了
70
大了
65
猜对了
You Win

6 编写Java程序模拟简单的计算器

定义名为Number的类其中有两个整型私有成员变量n1和n2。

编写构造方法赋予n1和n2初始值,并为该类定义加(add)、减(sub)、乘(mul)、除(div)等公有成员方法分别对两个成员变量执行加、减、乘、除的运算。

在main方法中创建Number类的对象调用各个方法并显示计算结果。

输出数据格式如下:

5+10=15
5-10=-5
5*10=50
5/10=0.5

7 时间加法

在程序中,经常要对时间进行操作,请定义实现一个时间类,来满足程序中的需要:

(1)定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)。

(2)为了保证数据的安全性,这三个成员变量应声明为私有。

(3)为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

(4)为MyTime类添加以下三个方法,分别对时、分、秒进行加减运算。
     addSecond(int second)
     addMinute(int minute)
     addHour(int hour)
    注意时、分、秒可以大于或小于0,在进行计算时还应该注意进位。
    如当前时间12:20:40,当调用addSecond( 30)时,则时间变为:12:21:10;

(5)重写toString()方法,用于将时间信息打印出来。输出格式为:时:分:秒(12:20:40)。

测试要求如下:

(1)初始化时间为 12:20:40

(2)增加30秒之后输出时间为:12:21:10

(3)增加70分钟后输出时间为:13:31:10

(4)增加25小时后输出时间为:14:31:10

输出结果如下:

12:21:10
13:31:10
14:31:10

8 时间减法

在程序中,经常要对时间进行操作,但是并没有时间类型的数据。那么,我们可以自己实现一个时间类,来满足程序中的需要:

(1)定义名为MyTime的类,其中应有三个整型成员:时(hour),分(minute),秒(second)。

(2)为了保证数据的安全性,这三个成员变量应声明为私有。

(3)为MyTime类定义构造方法,以方便创建对象时初始化成员变量。

(4)为MyTime类添加以下三个方法,分别对时、分、秒进行加减运算。
     subSecond(int second)
     subMinute(int minute)
     subHour(int hour)
     注意时、分、秒可以大于或小于0,在进行计算时还应该注意进位。
     如当前时间12:25:40,当调用subSecond(50)时,则时间变为:12:19:50;

(5)重写toString()方法,用于将时间信息打印出来。输出格式为:时:分:秒(12:20:40)

测试要求如下:
(1)初始化时间为 12:25:40

(2)减少80秒之后输出时间为:12:24:20

(3)减少70分钟后输出时间为:11:14:20

(4)减少25小时后输出时间为:10:14:20

输出结果如下:

12:24:20
11:14:20
10:14:20

9 学生排序

请创建学生类(Student),用于存储学生信息。创建ArrayList集合,依次存储如下5位同学的信息,并使用ComparableComparator接口对5位同学的成绩做降序排序,如果成绩一样,那在成绩排序的基础上按照年龄由小到大排序。最后遍历并输出ArrayList集合中的数据。

姓名(String)

年龄(int)

分数(double)

张三

20

90.0‍

李四

22

90.0

王五

20

99.0

孙六

22

100.0

赵七

20

100.0‍

输出结果如下:

Student [name=赵七, age=20, score=100.0]
Student [name=孙六, age=22, score=100.0]
Student [name=王五, age=20, score=99.0]
Student [name=张三, age=20, score=90.0]
Student [name=李四, age=22, score=90.0]

10 重复号码

已知数组存放一批QQ号码,QQ号码最长为11位,最短为5位String[] strs = {"12345","67891","12347809933","98765432102","67891","12347809933"}。 将该数组里面的所有qq号都存放在LinkedList中,将list中重复的元素删除,将list中所有元素分别用迭代器增强for循环打印出来。

11 随机数

产生10个1-100的随机数,并放到一个数组中,把数组中大于等于10的数字放到一个list集合中,并打印到控制台。

参考输出:

[44, 15, 97, 28, 68, 19, 12, 73]

12 保存省会

创建2个字符串数组,第一个数组内容为:[黑龙江省,浙江省,江西省,广东省,福建省]

第二个数组为:[哈尔滨,杭州,南昌,广州,福州]

将第一个数组元素作为key,第二个数组元素作为value存储到Map集合中。

删除Map集合中Key=黑龙江省的键值对。

迭代Map集合,参考的输出数据格式如下:

福建省=福州
浙江省=杭州
江西省=南昌
广东省=广州
posted @ 2024-12-06 10:47  xkfx  阅读(168)  评论(0编辑  收藏  举报