JAVA从入门到精通习题
1.编写一个程序,定义局部变量sum,并求出1+2+3+…+99+100之和,赋值给sum,并输出sum的值。
1 | public class Test { |
2.编写程序,要求运行后要输出long类型数据的最小数和最大数。
1 | public class Test { |
3.编写程序,计算表达式“((123456799)>(976543213))? true : false”的值。
1 | public class Test { |
4.编写程序,实现生成一随机字母(a-z,A-Z),并输出,运行结果如下图所示。
拓展知识。
⑴ Math.random()返回随机 double 值,该值大于等于 0.0 且小于 1.0。
例如: double rand = Math.random(); // rand 储存着[0,1) 之间的一个小数
⑵ 大写字母A~Z对应整数65 ~ 90、小写字母a~z对应整数97 ~ 122。
1 | public class Test { |
5.编写程序,实现产生(或输入)一随机字母(a-z,A-Z),转为大写形式,并输出。
1 | public class Test { |
6.编写程序,使用程序产生1-12之间的某个整数(包括1和12),然后输出相应月份的天数(2月按28天算)。运行结果如下图所。
1 | public class Test { |
7.编写程序,判断某一年是否是闰年。
1 | import java.util.Scanner; |
8.编写程序,对int[] a = {25, 24, 12, 76, 98, 101, 90, 28}数组进行排序。排序算法有很多种,读者可先编写程序实现冒泡法排序,运行结果如下图所示。(注:冒泡排序也可能有多种实现版本,本题没有统一的答案。)
1 | public class Test { |
9.定义一个包含name、age和like属性的Person类,实例化并给对象赋值,然后输出对象属性。
1 | class Person{ |
10.定义一个book类,包括属性title(书名)和price(价格),并在该类中定义一个方法printInfo(),来输出这2个属性。然后再定义一个主类,其内包括主方法,在主方法中,定义2个book类的实例bookA和bookB,并分别初始化title和price的值。然后将bookA赋值给bookB,分别调用printInfo(),查看输出结果并分析原因。
1 | class Book{ |
11.定义一个book类,包括属性title(书名)、price(价格)及pub(出版社),pub的默认值是“天天精彩出版社”,并在该类中定义方法getInfo(),来获取这三个属性。再定义一个公共类BookPress,其内包括主方法。在主方法中,定义3个book类的实例b1,b2和b3,分别调用各个对象的getInfo()方法,如果“天天精彩出版社”改名为“每日精彩出版社”,请在程序中实现实例b1,b2和b3的pub改名操作。
1 | class Book{ |
12.编程实现,现在有如下的一个数组。
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,生成的新数组为。
int newArr[]={1,3,4,5,6,6,5,4,7,6,7,5}
提示
需要确定新数组的大小,需要知道原始数组之中不为0的个数,可编写一个方法完成;根据统计的结果开辟一个新的数组;将原始数组之中不为0的数据拷贝到新数组之中。)
1 | public class Test { |
13.编程实现,要求程序输出某两个整数之间的随机数。
1 | import java.util.Scanner; |
14.定义枚举类型WeekDay,使用枚举类型配合switch语法,完善下面的代码,尝试完善完成如下功能:wd=Mon时,输出”Do Monday work”,wd=Tue时,输出”DoTuesday work”,…,依此类推,当wd不为枚举元素值时输出”I don’t know whichis day”。
1 | enum WeekDay{Sun,Mon,Tue,Wed,Thu,Fri,Sat}; |
15.建立一个人类(Person)和学生类(Student),功能要求如下。
⑴ Person中包含4个数据成员name、addr、sex和age,分别表示姓名、地址、类别和年龄。设计一个输出方法talk()来显示这4种属性。
⑵ Student类继承Person类,并增加成员Math、English存放数学与英语成绩。用一个6参构造方法、一个两参构造方法、一个无参构造方法和覆写输出方法talk()用于显示6种属性。对于构造方法参数个数不足以初始化4个数据成员时,在构造方法中采用自己指定默认值来实施初始化。
1 | class Person{ |
16.定义一个Instrument(乐器)类,并定义其公有方法play(),再分别定义其子类Wind(管乐器), Percussion(打击乐器),Stringed(弦乐器),覆写play方法,实现每种乐器独有play方式。最后在测试类中使用多态的方法执行每个子类的play()方法。
1 | class Instrument{ |
17.设计一个限制子类的访问的抽象类实例,要求在控制台输出如下结果。
教师→姓名:刘三,年龄:50,职业:教师
工人→姓名:赵四,年龄:30,职业:工人
1 | abstract class Person |
18.利用接口及抽象类设计实现
⑴ 定义接口圆形CircleShape(),其中定义常量PI,默认方法area计算圆面积;
⑵ 定义圆形类Circle实现接口CircleShape,包含构造方法和求圆周长方法;
⑶ 定义圆柱继承Circle实现接口CircleShape,包含构造方法,圆柱表面积,体积;
⑷ 从控制台输入圆半径,输出圆面积及周长;
⑸ 从控制台输入圆柱底面半径及高,输出圆柱底面积、圆柱表面积及体积。
1 | import java.util.Scanner; |
19.定义一个包含“name”、“age”和“sex”的对象,使用匿名对象输出对象实例。
1 | class Person{ |
20.完成一个统计Book类产生实例化对象的个数。
1 | class Book{ |
21.分别以如下形式输出当前的时间:形式一:2014-08-08;形式二:2014-08-08 18-40 123;形式三:2014年08月08日;形式四:2014年08月08日 16时40分123毫秒。
1 | import java.time.LocalDateTime; |
22.编写一个Java程序,完成以下功能。
⑴ 声明一个名为name的String对象,内容是“My name is Networkcrazy”;
⑵ 输出字符串的长度;
⑶ 输出字符串的第一个字符;
⑷ 输出字符串的最后一个字符;
⑸ 输出字符串的第一个单词;
⑹ 输出字符串crazy的位置(从0开始编号的位置)。
1 | public class Test{ |
23.定义一个Message类在主方法之中定义一个对象msg以及一个方法fun();temp为临时变量。
(1)
1 | class Messagge{ |
(2)
1 | public class Test{ |
(3)
1 | class Message{ |
24.编写一段程序,声明一个包,在另一个包中使用import语句访问使用,要求:
⑴ 声明一个包point,其中定义Point类,包含x,y坐标,构造方法,获取x,y坐标及设置;
⑵ 声明另一个包,导入包point,其中在新包中定义Circle类,半径,构造方法,获取、设置半径。
设计程序实现圆的实例化,并输出半径和圆心。
1 | package point; |
1 | package Test; |
1 | package Test; |
25.编写应用程序,从命令行输入两个整数参数,求它们的商。要求程序中捕获可能发生的异常。
1 | package Test; |
26.编写一段程序,使用ArrayList类存储以下元素:“one”、“two”、“three”、“four”,并通过Iterator迭代输出ArrayList中的内容。
1 | package Test; |
27.定义Student类,该类不实现Comparable接口,定义一个Comparator类比较两个Student对象所在班级名称和名字,班级名相同时用名字进行排序,使用TreeSet观察排序的结果。
1 | package Test; |
28.定义一个Student类(包含班级和姓名属性),然后定义多个StudentItem对象,并以姓名为键,对象为值添加到HashMap中,分别实现对该集合的查看、修改和删除。
1 | package Test; |
29.定义一个可以用来接收用户登录信息的Annotation。其中用户名和密码要求通过Annotation设置到验证的方法中,如下所示。
1 | "用户名",password = "密码") (name= |
之后编写程序用键盘输入用户的登录信息,并通过login()方法判断输入的用户名和密码是否正确。
1 | package Test; |
1 | package Test; |
1 | package Test; |
30.编写一个多线程处理的程序,其他线程运行10秒后,使用main方法中断其他线程。
1 | package Test; |
31.设计一个生产电脑和搬运电脑类,要求生产出一台电脑就搬走一台电脑,如果新的电脑没有生产出来,则搬运工就要等待;如果生产出的电脑没有搬走,则要等待电脑搬走之后再生产。在main方法中结束其他线程,然后输出生产的电脑数量。
1 | package Test; |
32.递归列出指定目录下的所有扩展名为txt的文件。
(1)
1 | package Test; |
(2)
1 | package Test; |
33.利用byte[]、BufferedInputStream 和 BufferedOutputStream 完成单个文件的复制。可复制图片、文本文件,复制后打开文件,对比两个文件是否内容一致,从而判断程序的正确性。(提示 先从一个文件中读取,再写进另一个文件)。
1 | package Test; |
34.有一个Student类,有学号(id)、姓名(name)、各科成绩(math、os、java)。从控制台输入信息创建两个学生对象,并将该类序列化到文件。注意要进行简单的输入验证。
1 | package Test; |
35.编写一个服务器端/客户端程序,对客户端输入的字符串,服务器端以“客户端:”开头再返回。
服务端:
1 | package Test; |
客户端:
1 | package Test; |