Java复习题目:
一、基本语法与逻辑类型题目(1题,20分,送分)
1、输出九九乘法表(双重循环)。
2、输出100以内的全部素数(循环、分支)
3、编程求全部三位数中的素数之和。(循环、分支)
4、输出Fibonacci数列的前20个数(递推、递归)。
5、打印出所有的三位水仙花数。
6、将学生的百分制成绩,换算为五分制成绩(分支)。
7、从键盘输入2个长整数和一个运算符,进行加或减运算,输出运算结果。(输入输
出)
8、编写一个Java程序,用if-else语句判断某年份是否为闰年。(四年一闰,百年不闰,
一百年再闰)
9、输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数(字符串)。
10、求1!+2!+3!+…+n!的值(循环)
11、判断一个整数是否为回文数(循环)。
12、输入三个数,按从小到大的顺序输出(分支)。
13、已知S=1-1/2+1/3-1/4+…-1/n,求解当n=100时的S值(循环、分支)。
14、从控制台输入数字,输出类似以下的图形(循环)。输入4出现如下图形:
*
***
*****
*******
*****
***
*
14、利用二维数组或不规则数组,打印出以下的三角形(要求打印出10行)
1
2 2
3 4 3
4 7 7 4
5 11 14 11 5
....................
二、数组类型题目
1、将一维数组的元素前后交换。
2、求4*4的矩阵的最大元素的位置,对角线元素的和。
3、有一个已经排好序的数组。现输入一个数,要求按原来的规律插入原数组。
4、将一个数组逆序输出。
5、打印出杨辉三角形(要求打印出10行)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
。。。。。。
6、输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
7、数组中有n个整数,现使其前面各数顺序后移m个位置,最后m个数变成最前面
的m个数。
三、类与对象(1题,20分)
1、设计一个User类,其中包括用户名、口令等属性以及构造方法(至少重载2个)、获取和设置口令的方法、显示和修改用户名的方法等。编写应用程序测试User类。
2、定义一个Student类,其中包括学号、姓名、性别、出生年月等属性以及init( )
——初始化各属性、display( )——显示各属性、modify( )——修改姓名等方法。实现并测试这个类。
3、从上题的Student类中派生出Graduate(研究生)类,添加属性:专业subject、导
师adviser。重载相应的成员方法。并测试这个类。
4、定义一个接口Inf,含有常量π和一个实现计算功能的方法calculate( ),再分别定义一个面积类area和一个周长类circumference,各自按计算圆面积和圆周长具体实现接口中的方法,并以半径为5来测试这两个类。
5、定义一个类,在main方法的try块中产生并抛出行测试。
要求如下:
(1)Student类中包含姓名、成绩两个属性。
分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值。一个异常,在catch块中捕获异
常,并输出相应信息,同时加入finally子句,输出信息,证明它的无条件执行。
6、定义一个类Caculate实现10以内的整数加减法的计算。自定义一个异常类NumberRangeException,当试图进行超范围运算时,产生相应的信息。编写应用程序进行测试。
(2)7、请按照以下要求设计一个学生类Student,并进
(3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值。
(4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,另一个使用有参的构造方法,在构造方法中给姓名和成绩
赋值。
8、定义一个Father和Child类,并进行测试。
要求如下:(1)Father类为外部类,类中定义一个私有的String类型的属性name,name的值为“zhangsan”。(2)Child类为Father类的内部类,其中定义一个introFather()方法,方法中调用Father类的name属性。(3)定义一个测试类Test,在Test类的
main()方法中,创建Child对象,并调用introFather()方法。
9、请按照以下要求设计类。
要求如下:
1)设计Animal类。类中定义一个成员变量animalName,表示动物的名称,变量animalName是String类型,默认初始值。在该类中再定义一个成员方法shout(),
表示动物发出叫声的行为,该方法能输出名称为name的动物发出叫声,例如输
出“波斯猫发出叫声”。
2)设计Cat类。使用关键字extends继承Animal类。Cat类中定义一个public类型的构造方法,该构造方法拥有一个String类型的参数catName,通过该参数,为
Cat类中继承自Animal类的animalName成员变量赋值
3)设计一个测试类。类名为ExtendsTest,在main方法中定义一个String类型的name 变量,并为它赋值为”波斯猫”,然后使用有参构造创建Cat类的对象,并使用对
象的引用变量调用shout()方法。
10、设计一个学生类Student和它的一个子类Undergraduate,要求如下:
(1)Student类有name(姓名)和age(年龄)属性,一个包含两个参数的构造方法,用于给name和age属性赋值,一个show方法打印Student的属性
信息。
(2)本科生类Undergraduate增加一个degree(学位)属性。有一个包含三个参数的构造方法,前两个参数用于给继承的name和age属性赋值,第三个参
数给degree专业赋值,一个show()方法用于打印Undergraduate的属性信
息。
(3)在测试类中分别创建Student对象和Undergraduate对象,调用它们的show ()方法。
11、设计一个Shape接口和它的两个实现类Square和Circle,要求如下:
(1)Shape接口中有一个抽象方法area(),方法接收一个double类型的参数,返回一个double类型的结果。
(2)Square和Circle中实现了Shape接口的area()抽象方法,分别求正方形和圆形的面积并返回。
(3)在测试类中创建Circle和Square对象,计算半径为3的圆形面积和边长为2的正方形面积。
12、自定义一个异常类NoThisSongException和Player类,在Player的play()方法中
使用自定义异常,要求如下:
(1)NoThisSongException继承Exception类,类中有一个无参和一个接收一个String类型参数的构造方法,构造方法中都使用super关键字调用父类的构
造方法。
(2)Player类中定义一个play(int index)方法,方法接受一个int类型的参数,表示播放歌曲的索引,当index>10时,play()方法用throw关键字抛出
NoThisSongException异常,创建异常对象时,调用有参的构造方法,传入
“您播放的歌曲不存在”。
(3)在测试类中创建Player对象,并调用play()方法测试自定义的NoThisSongException异常,使用try…catch语句捕获异常,调用
NoThisSongException的getMessage()方法打印出异常信息。
13(来自2015春考题)、1)创建一个抽象类Animal,有属性Name,在构造函数中设置该属性的值,有抽象方法catchMouse( )。
2)从Animal继承一个名为Dog的新类,实现其父类的catchMouse()方法(只需简单输出一行说明即可)。
3)从Animal继承另一个名为Cat的新类,实现其父类的catchMouse()方法(该方法并不直接捕鼠,而是委托给某Dog来捕鼠)。
4)在主类的Main方法中创建类Dog的一个对象,设置其Name为“ZangAo”;创建类Cat 的一个对象,设置其Name为”JiaFeiMao”,并让该cat对象委托“ZangAo”对象去捕鼠。写出运行程序后输出的结果。
注意:catchMouse()方法的参数形式和是否需要重载,请根据题意自行补充。
14、(1)编写一个圆类Circle,该类拥有:
①一个成员变量
Radius(私有,浮点型);// 存放圆的半径;
②两个构造方法
Circle( ) // 将半径设为0
Circle(double r ) //创建Circle对象时将半径初始化为r
③三个成员方法
double getArea( ) //获取圆的面积
double getPerimeter( ) //获取圆的周长
void show( ) //将圆的半径、周长、面积输出到屏幕
(2)编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
①一个成员变量
double hight(私有,浮点型);// 圆柱体的高;
②构造方法
Cylinder (double r, double h ) //创建Circle对象时将半径初始化为r
③成员方法
double getVolume( ) //获取圆柱体的体积
void showVolume( ) //将圆柱体的体积输出到屏幕编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。
四、字符串与Java API
1、写一个控制台应用程序,接收一个长度大于3的字符串,完成下列功能:
1)输出字符串的长度。
2)输出字符串中第一个出现字母a的位置。
3)在字符串的第3个字符后面插入子串“hello”,输出新字符串。
4)将字符串“hello”替换为“me”,输出新字符串。
5)以字符“m”为分隔符,将字符串分离,并输出分离后的字符串。
2、编一个程序,定义一个字符串数组,输入若干国家名称(所有名称全用大
写或者全用小写),设计一个算法按字典顺序将这些国家名称进行排序。
3、编写一个程序,实现字符串大小写的转换并倒序输出,要求如下:
(1)使用for循环将字符串,如“HelloWorld”从最后一个字符开始遍历;
(2)遍历的当前字符如果是大写字符,就使用toLowerCase()方法将其转换为小写字符,反之则使用toUpperCase()方法将其转换为大写字符。
(3)定义一个StringBuffer对象,调用append()方法依次添加遍历的字符,最后调用StringBuffer对象的toString()方法,并将得到的结果输出。
五、集合(1题,20分,常用集合的增删改查)
1、请按照以下要求设计一个Example01类。
要求如下:
1)创建一个ArrayList集合alist,向集合中添加数据,获取集合中元素的个数并打印出第三个元素。
2)创建LinkedList集合link,并向link添加四个元素。
3)向link集合的第一个位置插入元素,移除该集合中第三个元素。
2、使用ArrayList集合,对其添加10个不同的元素,并使用Iterator遍历该集合。提示:(1)使用add()方法将元素添加到ArrayList集合中。(2)调用集合的iterator()方法获得Iterator 对象,并调用Iterator的hasNext()和next()方法,迭代出集合中的所有元素。
3、在HashSet集合中添加三个Person对象,把姓名相同的人当作同一个人,禁止重复添加。提示:Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals()方法返回true。
4、选择合适的Map集合保存5位学员的学号和姓名,然后按学号的自然顺序的倒序将这些键值对一一打印出来。提示:(1)创建TreeMap集合。(2)使用put()方法将学号(“1”,”2”,”3”,”4”,”5”)和姓名(“Lucy”,”John”,”Smith”,”Aimee”,”Amanda”)存储到Map中,存的时候可以打乱顺序观察排序后的效果。(3)使用map.keySet()获取键的Set集合;(4)使用Set集合的iterator()方法获得Iterator对象用于迭代键。(5)使用Map集合的get()方法获取键所对应的值。
5、(来自2015春考题)使用ArrayList类型的集合,
1)对其添加5个不同的国家名称(如China,USA,Japan,India,Russia),
2)将集合中的全部元素,放入另一个HashSet类型的集合中,
并使用Iterator遍历输出该HashSet集合。
六、IO(文件读写)
1、编写一个application程序,分别用字节流和字符流拷贝一个文本文件,同时将复
制的内容显示在屏幕上。
2、编写程序,读入文本文件的内容,统计出文件中的单词个数。
3、应用FileInputStream类,编写应用程序,从磁盘上读取一个Java程序,并将源程
序代码显示在屏幕上。(被读取的文件路径为:E:/myjava/Hello.java)
4、1)编写Student类,有id、name、age属性和构造函数、introduce(String id,String
name,int age)方法及其他必要的方法;
2)在Main类的main方法中创建两个Student对象,并依次写入students.dat文件;
3)从students.dat文件中读出这两个Student对象,并让其执行introduce做自我介绍。
5、编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt
文件中,并以相反的顺序读出显示在屏幕上。
6、请按照以下要求设计ListFilesExample类。
要求如下:
(1)该类能够实现遍历指定目录(例如E:\ cn\itcast\chapter08)及其子目录下所有文件,并输出所有文件名的功能
(2)该类定义一个无返回值的静态成员方法fileDir(File dir),方法中形参可以接收
待遍历目录的java.io.File类型对象。使用File类中的listFiles()方法和isDirectory(),运用递归的方式实现所需功能,如果是目录时,继续递归遍历,如果是文件,输出文件的文件名。
(2)该类main()方法中调用了fileDir(File dir)方法,传入待遍历目录的File类型实参。
七、图形界面编程(1题,20分)
1、编写程序,在屏幕上显示带标题的窗口,并添加一个按钮。当用户单击按钮时,结束程序。
2、在窗体上产生一个单文本框和两个命令按纽:“显示”和“清除”。当用户单击“显示”按纽时,在文本框中显示“Java 程序”字样;单击“清除”按纽时清空文本框。
3、设计如下界面:
当用户输入了两个操作数并点击运算种类按纽后,在运算结果对应的文本框中显示运算结果。
4、请按照以下要求设计一个用户聊天界面
要求如下:
1)用Swing组件设计界面,创建类Swing
2)创建一个文本域,一个文本框,一个按钮(发送),文本框前有描述文字:“我要发言”。
3)文本域不可编辑,点击发送按钮可将文本框中的内容复制到文本域中
4)如果文本框中内容为空,提示“发送信息不能为空,请重新输入”
5、编写一个JFrame窗口,要求如下:
(1)在窗口的最上方放置一个JLabel标签,标签中默认的文本是“此处显示鼠标右键点击的坐标”。(2)为JFrame窗口添加一个鼠标事件,当鼠标右键点击窗口时,鼠标的坐标在JLabel标签中显示。
6、编写一个JFrame窗口,要求如下:
(1)在窗口的NORTH区域放置一个JPanel面板。
(2)JPanel面板中从左到右依次放置如下组件:
JLabel标签,标签的文本为“兴趣”。
三个JCheckBox多选按钮,文本分别为“羽毛球”、“乒乓球“、“唱歌”。
JLabel标签,标签的文本为“性别”
两个JRadioButton按钮,文本分别为“男”“女“。
(3)窗口的CENTER区域放置一个JScrollPane容器,容器中放置一个JTextArea 文本域。
(4)当点击多选按钮和单选按钮时,会把选中按钮的文本显示在JTextArea文本域中。
7、编写一个JFrame窗口,要求如下:
1)窗口包含一个菜单栏、一个弹出式菜单和一个JLabel标签。
2)菜单栏中有两个菜单,第一个菜单有两个菜单项,它们之间用分隔符分开,第二个菜单有一个菜单项。
3)弹出式菜单有三个菜单项:红色,绿色,蓝色。
4)JLabel标签放置在窗口的中间(即BorderLayout.CENTER),当点击菜单项时,菜单项中的文本显示在JLabel标签中。
5)当在窗口中右键单击时,弹出式菜单打开,当点击三种颜色的菜单时,将窗口的背景色设置为对应的颜色。
8、(来自2015春考题)编写一个GUI程序,运行界面参考如下图。功能:
(1)当点击“读入文件”菜单时,程序会读入E:\reader.txt 文件的内容,并放入窗体中间的JTextArea控件中显示。
(2)当点击“退出”或右上方的关闭按钮时,会关闭程序。