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
(品牌)属性,并且要求封装私有化,写出属性的setter
与getter
方法。抽象类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,则游戏终止并提示放弃游戏。
要求:
- 创建Game类,在Game类中创建私有成员变量num。
- 在Game类中创建构造方法,并在构造方法中使用随机数类为num赋值。
- 在Game类中创建play方法,在方法中使用循环进行大,小,猜对的判断。输出并返回相关的提示信息。
- 创建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位同学的信息,并使用Comparable
或Comparator
接口对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
集合,参考的输出数据格式如下:
福建省=福州
浙江省=杭州
江西省=南昌
广东省=广州