《Java程序设计项目教程(第二版)-参考答案.docx》由会员分享,可在线阅读,更多相关《Java程序设计项目教程(第二版)-参考答案.docx(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、项目1一、思考题 1Java程序有几种版本,分别是什么? Java有三种版本,分别是J2ME、J2SE、J2EE2Java程序有何特点?Java语言的特点如下:面向对象:支持代码继承及重用,是完全面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。解释执行:Java解释器(运行系统)能直接运行目标代码指令。平台无关:Java源程序被编译成一种高层次的与机器无关的Byte-codes格式语言, 被设计在Java虚拟机上运行。多线程:Java提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的好处是可以有更好的交互性能和实时控制性能。健壮性:Java致力于检查程序在编译和运行
2、时的错误,类型检查帮助检查出许多开发早期出现的错误。3什么是JVM,为什么需要JVM?JVM即Java虚拟机,是一台可以存在于不同的真实的软、硬件环境下的虚拟的计算机,其功能是将字节码解释为真实平台能执行的指令。Java正是通过虚拟机JVM技术,实现了与平台无关,实现“编写一次,到处运行”。因此,任何平台只要安装相应的Java虚拟机环境,就能运行Java程序。4如何理解Java程序的基本结构?语句package p1;是建立一个包(文件夹),生成的类文件将存放于包中。程序第一行public class 类名,是一个类定义语句。public关键字指明类的访问方式为公有,也就是在整个程序内都可以访
3、问到它。如果将类定义为public,则类其名称必须与主文件名一致,并且大小写敏感。类后大括号内可以定义类的成员和方法,对于一个可执行的Java类,main方法是必需的,而且该main方法必须是公有 (public)、静态 (static)和没有返回值(void)的,同时它只能带一个字符串型(String)的参数。程序的一行“/”是注释,只说明不运行。每个命令语句结束,必须以“;”结尾。二、编程1编写一Java应用程序,要求在屏幕上输出字符串“Happy New Year!”。class Prac1 public static void main(String args) System.out.
4、println(Happy New Year!); 2.编写一个简单的Java程序,在屏幕上输出如下图形:* * * * * * * class Prac2 public static void main(String args) System.out.println( *); System.out.println( *); System.out.println(*); 项目2一、选择题1数组中可以包含什么类型的元素?( D )A. int型B. String型C. 数组D. 以上都可以2Java中定义数组名为Arr,下面哪项可以得到数组元素的个数?( B )A. Arr.length( )
5、B. Arr.lengthC. Arr (xyz)D. Arr (xyz)3下面哪条语句定义了3个元素的数组?( A )A. int a=20,30,40;B. int a =new int(3) ;C. int 3 array;D. int arr;4下面的代码段中,执行之后i和j的值是( B )。int i = 10;int j;j = i+; A. 10, 10B. 11, 10C. 10, 11D. 11, 11二、编程1试编写一个程序,输入三条边长值,并判断这三条边长能不能构成三角形,如果能,能构成什么样的三角形(一般、等边、等腰)。import java.util.*; class
6、 Practice1 public static void main(String args) Scanner s=new Scanner(System.in); int a,b,c; a=s.nextInt(); b=s.nextInt(); c=s.nextInt(); if(a+bc&a+cb&b+ca) if(a=b&a=c) System.out.print(构成的三角形为等边三角形。); else if(a=b|a=c|b=c) System.out.print(构成的三角形为等腰三角形。); else System.out.print(构成的三角形为一般三角形。); else S
7、ystem.out.print(不能构成三角形。); 2试编写一个程序,读入10个学生的成绩,成绩在059分为D,成绩在6079分为C,成绩在8089分为B,成绩在90100分为A,并输出A、B、C、D的人数个数。import java.util.*;public class Practice2 public static void main(String args) throws IOException int a=10,a1=0,a2=0,a3=0,a4=0,c; int numa=new inta; for (int i=0;ia;i+) System.out.print(请输入第+(i
8、+1)+个人的成绩); c=getInputData(); while (c100) System.out.print(请重新输入第+(i+1)+个学生的成绩); c=getInputData(); numai=c;/保存 System.out.println(numai); switch (numai/10)case 10:System.out.println(成绩为A级!);a1+;break;case 9:System.out.println(成绩为A级!);a1+;break;case 8:System.out.println(成绩为B级!);a2+;break;case 7:Syst
9、em.out.println(成绩为C级!); a3+;break;case 6:System.out.println(成绩为C级!);a3+;break;default:System.out.println(成绩为D级!);a4+;break; System.out.println(90-100分的人数=+a1); System.out.println(80-89分的人数=+a2); System.out.println(60-79分的人数=+a3); System.out.println(0-59分的人数=+a4); public static int getInputData() thr
10、ows IOException Scanner s=new Scanner(System.in); int n=s.nextInt(); return n; 3试编写一个程序,输出以下形式的图形。 * * * * * * * * * * * * * * * * * * * * * * * *class Practice3 public static void main(String args) for(int i=1;i=4;i+) for(int j=1;j=i;j+) System.out.print( ); for(int k=1;k=5;k+) System.out.print(*);
11、 System.out.println(); 4试编写游戏程序,完成猜数字游戏,数字是由计算机随机产生的100以内整数。一次就猜中得100分,2次才猜中得90分,依次类推,超过10次无分。程序最后输出参与者得分。import java.util.*;class Practice4 public static void main(String args) int a=(int)(Math.random()*10); int guess,score=100; Scanner s=new Scanner(System.in); int i; for( i=1;i=10;i+) guess=s.nex
12、tInt(); if(guess=a) break; score=score-10; System.out.print(i+得分为:+score); 项目3一、选择题1 定义类头(非内部类)时,不可能用到的关键字是( B ) A) class B)private C)extends D)public2下列类头定义中,错误的是( A )A)public x extends y . B) public class x extends y . C)class x extends y implements y1 . D)class x .3设 A为已定义的类名,下列声明A类的对象a的语句中正确的是(
13、D ) A)float A a; B)public A a=A( ); C)A a=new int( ); D)static A a=new A( );4设 X 、Y 均为已定义的类名,下列声明类X的对象x1的语句中正确的是( C ) A)public X x1= new Y( ); B)X x1= X ( ); C)X x1=new X( ); D)int X x1;5设X 、Y为已定义的类名,下列声明X类的对象x1的语句中正确的是( A ) A)static X x1; B)public X x1=new X(int 123); C)Y x1; D)X x1= X( );6. 有一个类A,
14、以下为其构造方法的声明,其中正确的是( A ) A)public A(int x). B)static A(int x). C)public a(int x). D)void A(int x).7有一个类Student,以下为其构造方法的声明,其中正确的是( B ) A)void Student (int x). B)Student (int x). C)s(int x). D)void s(int x).8下列选项中,用于定义接口的关键字是( A ) A)interface B) implements C) abstract D)class9现有类A和接口,以下描述中表示类实现接口的语句是(
15、 A ) A)class implements B B)class B implements C)class extends B D)class B extends 二、填空题1如果子类中的某个变量的变量名与它的父类中的某个变量完全一样,则称子类中的这个变量_隐藏_了父类的同名变量。2如果子类中的某个方法的名字、返回值类型和_参数列表_与它的父类中的某个方法完全一样,则称子类中的这个方法覆盖了父类的同名方法。3抽象方法只有方法头,没有_方法体_。4接口中所有属性均为_public_、_static_和_final_的。5一个类如果实现一个接口,那么它就必须实现接口中定义的所有方法,否则该类就必
16、须定义成_抽象_的。6Java语言中用于表示类间继承的关键字是_extends_。7下面是一个类的定义,请将其补充完整。class _Student_ String name;int age;Student( _String_ s, int i) name=s; age=i; 8下面是一个类的定义,请将其补充完整。_class_ A String s; _static_ int a=666; A(String s1) s=s1; static int geta( ) return a; 三、编程题1编写一个类,描述学生的学号、姓名、成绩。学号用整型,成绩用浮点型,姓名用String类型。编写一
17、个测试类,输入学生的学号、姓名、成绩,并显示该学号的学生姓名,以及成绩。import java.util.*;class Studentint sNum;String name;double score;class T1_Studentpublic static void main(String args)Scanner sc=new Scanner(System.in);Student s=new Student();s.sNum=sc.nextInt();s.name=sc.next();s.score=sc.nextDouble();System.out.println(s.name+的
18、学号是+s.sNum+成绩是+s.score);2设计一个Birthday类,其成员变量有:year,month,day;提供构造方法、输出Birthday对象值的方法和计算年龄的方法。编写程序测试这个类。class Birthdayprivate int year;private int month;private int day;public Birthday(int year,int month,int day) this.year=year; this.month=month; this.day=day; public void printBirthDay() System.out.p
19、rintln(year+-+month+-+day); public int printAge() return 2021-year; public static void main(String args) Birthday birth=new Birthday(1991,11,5);birth.printBirthDay();int age=birth.printAge();System.out.println(age);3编写一个类,描述汽车,其中用字符型描述车的牌号,用浮点型描述车的价格。编写一个测试类,其中有一个修改价格方法,对汽车对象进行操作,根据折扣数修改汽车的价格,最后在mai
20、n方法中输出修改过后的汽车信息。public class ChangeCarpublic static void main(String args)Car c=new Car();c.carNum=鲁A1111;c.price=10;System.out.println(before change ,the cars num and price is:+c.carNum+ +c.price);changePrice(c);System.out.println(After Change ,the cars price is:+c.price);public static void changeP
21、rice(Car c)c.price=c.price*0.8;class CarString carNum;double price;4编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个类都有构造方法和输出相关数据的方法。class Vehicle int wheels; float weight; Vehicle(int a,float b) wheels=a; weight=b; voi
22、d outData() System.out.print(The vehicles data:wheels:+wheels+,weight:+weight); class Car extends Vehicle int loader; Car(int a,float b,int c) super(a,b); loader=c; void outData() super.outData(); System.out.print(,loader:+loader); class Truck extends Car float payload; Truck(int a,float b,int c,flo
23、at d) super(a,b,c); payload=d; void outData() super.outData(); System.out.println(,payload:+payload); class Test public static void main(String args) Vehicle v=new Vehicle(4,7); v.outData(); System.out.println(); Car c=new Car(4,6,4); c.outData(); System.out.println(); Truck t=new Truck(4,2,10,8); t
24、.outData(); 5定义一个接口CanFly,描述会飞的方法public void fly();分别定义类飞机和鸟,实现CanFly接口。定义一个测试类,测试飞机和鸟,在main方法中创建飞机对象和鸟对象,让飞机和鸟起飞。interface CanFlypublic void fly();class Plane implements CanFlypublic void fly()System.out.println(飞机需借助螺旋桨飞上了天空。);class Bird implements CanFlypublic void fly()System.out.println(鸟需借助翅膀飞
25、上了天空。);class Testpublic static void main(String args)Plane p=new Plane();Bird b=new Bird();p.fly();b.fly();项目4一、选择题1关于异常的定义,下列描述中最正确的一个是( D )。A)程序编译错误 B)程序语法错误 C)程序自定义的异常事件 D)程序编译或运行时发生的异常事件2抛出异常时,应该使用的子句是( A )。A)throw B)catch C)finally D)throws3自定义异常类时,可以继承的类是( C )。A)Error B)Applet C)Exception及其子类
26、D)AssertionError4当方法产生异常但却无法确定该如何处理时,应采用的方法是( C )。A)声明异常 B)捕获异常 C)抛出异常 D)自定义异常5对于trycatch子句的排列方式,正确的一项是( A )。A)子类异常在前,父类异常在后 B)父类异常在前,子类异常在后C)只能有子类异常 D)父类异常与子类异常不能同时出现6下列关于try、catch和finally的表述,错误的是( C )。A)try语句块后必须紧跟catch语句块 B)catch语句块必须紧跟在try语句块后C)可以有try但无catch D)可以有try但无finally7下列描述中,错误的一项是( A )。A
27、)一个程序抛出异常,其他任何运行中的程序都可以捕获B)算术溢出需要进行异常处理 C)在方法中检测到错误但不知如何处理时,方法就声明异常 D)任何没有被程序捕获的异常最终被默认处理程序处理8下面程序运行时,会产生的异常是( C )。class Testpublic static void main(String ar)int x=0,y=20,z;z=(x+y)/(x*y);System.out.println(z=+z);A)ArrayIndexOutOfBoundsException B)NumberFormatException C)ArithMeticException D)NullPo
28、interException二、填空题1一个try代码段后必须跟 catch 代码段, finally 代码段可以没有。2自定义异常类必须继承 Exception 类或其子类。3异常处理机制可以允许根据具体的情况选择在何处处理异常,可以在 当前方法中 捕获并处理,也可以用throws子句把它交给 调用方法 去处理。4数组下标越界对应的类是 ArrayIndexOutOfBoundsException 。5为达到高效运行的要求, 运行时产生 的异常,可以直接交给Java虚拟机系统来处理,而 Exception 类派生出的非运行异常,要求编写程序捕获或者声明。三、编程题1从键盘输入5个数,求出5个
29、数的阶乘之和。若输入负数时,产生异常并进行相应的处理。import javax.swing.*;class ExceptionExampublic static void main(String args)int i,sum=0,j;for(i=0;i5;i+)j=1;int x=Integer.parseInt(JOptionPane.showInputDialog(null,input:);try if(x0) throw new Exception(); for(int k=1;k=x;k+) j=j*k; sum=sum+j;catch(Exception e) System.out.
30、println(输入了一个负数,请重新输入!); i-; System.out.println(阶乘和为:+sum);2设计自己的异常类,从键盘输入一个数,若输入的数不小于0,则输出它的平方根。若小于0,则输出提示信息“输入错误”。(求平方根的方法为:Math.sqrt(int x))import javax.swing.*;class MyException extends Exceptionstatic int i=3;MyException()super(产生异常!);class ExceptionTestpublic static void main(String args)int x
31、=Integer.parseInt(JOptionPane.showInputDialog(null,input:);try if(x0) throw new MyException(); System.out.println(输入数的平方根为:+Math.sqrt(x);catch(MyException e) System.out.println(e.getMessage(); System.out.println(异常编号为:+e.i); 项目5一、选择题1下面属于容器类的是( A ) AJFrame BJTextField CColor DJMenu2FlowLayout的布局策略是(
32、 A ) A按添加的顺序由左至右将组件排列在容器中。 B按设定的行数和列数以网格的形式排列组件。 C将窗口划分成五部分,在这五个区域中添加组件。 D组件相互叠加排列在容器中。3BorderLayout的布局策略是( C ) A按添加的顺序由左至右将组件排列在容器中。 B按设定的行数和列数以网格的形式排列组件。 C将窗口划分成五部分,在这五个区域中添加组件。 D组件相互叠加排列在容器中。4GridLayout的布局策略是( B ) A按添加的顺序由左至右将组件排列在容器中。 B按设定的行数和列数以网格的形式排列组件。 C将窗口划分成五部分,在这五个区域中添加组件。 D组件相互叠加排列在容器中。5
33、JFrame中内容窗格缺省的布局管理器是( B )AFlowLayout BBorderLayout CGridLayout DCardLayout6监听事件和处理事件( B ) A都由Listener完成B都由相应事件Listener处注册的构件完成C由Listener和构件分别完成D由Listener和窗口分别完成7在下列事件处理机制中不是机制中的角色的是( A )A事件B事件源C事件接口D事件处理者8addActionListener(this)方法中的this参数表示的意思是( B )A当有事件发生时,应该使用this监听器Bthis对象类会处理此事件Cthis 事件优先于其他事件D只
34、是一种形式9下列关于Component的方法中,错误的是( A )AgetName( )用于获得组件的名字B getSize( )用于获得组件的大小CsetColor( )用于设置前景颜色DsetVisible( )设置组件是否可见10当窗口关闭时,会触发的事件是( C )AContainerEventBItemEventCWindowEvent DMouseEvent二、填空题1AWT的用户界面组件库被更稳定、通用、灵活的库取代,该库称为 swing 。2_布局管理器_用于安排容器上的GUI组件。3设置容器布局管理器的方法是 setLayout() 。4当释放鼠标按键时,将产生_ mouse
35、Release _事件。5Java为那些声明了多个方法的Listener接口提供了一个对应的_适配器_,在该类中实现了对应接口的所有方法。6ActionEvent事件的监听接口是 ActionListener ,注册方法名是 add ActionListener() ,事件处理方法名是_public void action_performed()_。7图形用户界面通过_事件_响应用户和程序的交互,产生事件的组件称为_事件源_。8Java的Swing包中定义菜单的类是 JMenu 。三、编程题1设计如图所示样式的图形用户界面(不要求实现功能)。import javax.swing.*; clas
36、s Demopublic Demo()JLabel b1 = new JLabel(当前时间:); JLabel b2 = new JLabel(时);JLabel b3 = new JLabel(分);JLabel b4 = new JLabel(秒);JLabel b5 = new JLabel(闹钟时间:);JLabel b6 = new JLabel(时);JLabel b7= new JLabel(分);JLabel b8 = new JLabel(秒);JLabel b9 = new JLabel(闹钟设置);JTextField t1=new JTextField(8,3);JT
37、extField t2=new JTextField(57,3);JTextField t3=new JTextField(59,3);JTextField t4=new JTextField(3);JTextField t5=new JTextField(3);JTextField t6=new JTextField(3);JButton bt1=new JButton(开);JButton bt2=new JButton(关);JFrame win = new JFrame();win.setLayout(new FlowLayout();win.add(b1);win.add(t1);w
38、in.add(b2);win.add(t2);win.add(b3);win.add(t3);win.add(b4);win.add(b5);win.add(t4);win.add(b6);win.add(t5);win.add(b7);win.add(t6);win.add(b8);win.add(b9);win.add(bt1);win.add(bt2);win.setSize(340,160);win.setVisible(true);public static void main(String arg)new Demo();2编写一个将华氏温度转换为摄氏温度的程序。其中一个文本框输入华氏温度,另一个文本框显示转换后的摄氏温度,一个按钮完成温度的转换。使用下面的公式进行温度转换:摄氏温度=5/9(华氏温度-32)。import java.awt.*;import java.awt.event.*;import javax.swing.*; class Demo implements ActionListener JLabel b1,b2; TJextField t1,t2;public Demo()b1 = new JLabel(华氏温度:); b2 = new JLa