java程序设计课后答案Word格式.docx
《java程序设计课后答案Word格式.docx》由会员分享,可在线阅读,更多相关《java程序设计课后答案Word格式.docx(23页珍藏版)》请在冰豆网上搜索。
32
-231~231-1
long
64
-263~263-1
float
-3.4×
1038~3.4E×
1038(精度为6到7位有效数字)
double
-1.7×
10308~1.7×
10308(精度为14到15位有效数字)
3.答:
若是所占位数小的转换成所占位数大的,则不会丢失其精度;
若是高级向低级转换的话,则需要进行强制转换!
但会导致溢出或精度下降。
4.答:
(1)false
(2)ture(3)false(4)ture
5.答:
(1)x>
=0||x<
0
(2)x>
1&
&
x<
100
6.答:
(1)y=-1
(2)y=45(3)y=2
四.编程题
使用while循环改写下列for循环。
改写后是:
inty=0,x=1;
While(y<
10000)
{
y=y+x;
X++;
}
2.判断某一年份是否是闰年。
答:
importjava.io.*;
publicclassTestYear
{
publicstaticvoidmain(String[]agrs)throwsIOException
try
InputStreamReaderyear;
BufferedReadern;
year=newInputStreamReader(System.in);
n=newBufferedReader(year);
System.out.print("
请输入一年份:
"
);
Strings=n.readLine();
intleapyear=Integer.parseInt(s);
//把输入的字符串转换成整型
if(leapyear%4==0&
leapyear%100!
=0||leapyear%400==0)
System.out.print(leapyear+"
年是闰年!
else
System.out.print(leapyear+"
年不是闰年!
}
catch(IOExceptione)
{
}
运行结果是:
3.答:
publicclassTuan
{
publicstaticvoidmain(String[]args)
for(inti=1;
i<
=4;
i++)//外循环控制打印的行数
{
for(intk=1;
k<
=4-i;
k++)
"
//打印空格
for(intj=1;
j<
=2*i-1;
j++)
{System.out.print("
*"
}//打印”*”
System.out.println();
//换行打印
}
}
结果显示:
第三章
1.√2.×
3.×
4.√5.×
二.选择题
1.BC2.AC3.BD4.B5.B
三.写出运行结果
Whatapleasure!
IamTom
Howdoyoudo?
四.编程题
解法一
packagemypackage.math;
classRectangle{
privateintlength;
privateintwidth;
publicRectangle(intlength,intwidth){
this.length=length;
this.width=width;
publicvoidset(intlength,intwidth){
publicvoidget(){
System.out.println("
此长方形的长为"
+length+"
宽为"
+width);
publicintgetLength(){
returnlength;
publicintgetWidth(){
returnwidth;
publicintcalculatePerimeter(){
return2*(length+width);
publicintcalculateArea(){
return(length*width);
publicvoidprint(){
此长方形的周长为"
+calculatePerimeter()+"
面积为"
+calculateArea());
classTest{
publicstaticvoidmain(String[]args){
Rectanglemyrectangle=newRectangle(15,10);
myrectangle.get();
myrectangle.print();
myrectangle.set(20,15);
长方形的长是"
+myrectangle.getLength()+"
宽是"
+myrectangle.getWidth());
解法二
1.Rectpackage包
packageRectpackage;
publicclassRect
intlength;
intwidth;
publicRect()
this.length=0;
this.width=0;
publicvoidset(intL,intW)
length=L;
width=W;
publicvoidget()
System.out.println("
矩形的长度是:
宽度是:
publicvoidarea()
矩形的面积是:
+length*width);
publicvoidcrea()
矩形的周长是:
+2*(length+width));
2.TestRect.java源程序
importRectpackage.*;
publicclassTestRect
publicstaticvoidmain(String[]args)
RectA=newRect();
A.set(20,30);
A.get();
A.area();
A.crea();
3.运行结果:
五.问答题
1.答:
Java中使用static修饰的变量和方法称为类变量(或称静态变量)和类方法(或称静态方法),没用static修饰符的变量和方法称为实例变量和实例方法。
类成员是指该成员属于这个类,由这个类所创建的所有对象共同拥有,该成员仅在类的存储单元中存在,这个类所创建的所有对象中仅存储一个指向该成员的引用。
任何一个该类的对象改变了类成员,其他对象同样会发生改变。
对于类成员既可以使用对象访问,也可以使用类名直接进行访问,并且在类方法中只能访问类变量,而不能访问实例变量。
实例成员是指该成员由每一个对象个体独有,对象的存储空间中的确有一块空间用来存储该成员,不同对象的实例成员不同,任何一个对象改变了实例成员,只会影响这个对象本身,其他对象中的实例成员不会发生改变。
对于实例成员只能通过对象来访问,不能通过类名进行访问,在实例方法中既可以访问实例变量,也可以访问类变量。
2.答:
继承是面向对象程序设计中两个类之间的一种关系。
当一个类获取另一个类中所有非私有的数据和操作的定义作为它自己的部分或全部成分时,就称这两个类之间具有继承关系。
被继承的类称为父类或超类,继承了父类或超类的所有数据和操作的类称为子类。
面向对象程序设计中的继承,可使得程序结构更加清晰,降低了编码和维护的工作量。
3.答:
如果子类只从一个父类继承,则叫单重继承。
如果子类从一个以上父类继承,则叫多重继承。
第四章
2.√3.×
4.√5.×
6.√7.√8.√9.√
1.A2.A3.C4.C
1.答:
常见的五种异常:
内存耗尽、数组下标超出边界、被0除、非法的方法参数、算法溢出处。
(1)ArithmeticException
(2)NullPointerException
(3)ClassCastException
(4)IndexOutOfBoundsException
(5)ArrayOutOfLengthException
未捕获的异常最终会导致程序非正常终止。
publicclassExceptionExam
publicstaticvoidmain(String[]args)
try{
inti=0;
i=3/i;
//将产生算术异常。
catch(ArithmeticExceptione)//找到了匹配的异常,执行该catch块。
发生了ArithmeticException异常"
catch(AarryIndexOutOfBoundsExceptione)//不是匹配的异常,且不会再捕获
//异常,如果发生数组索引超出范围所产生的异常,将执行该catch块。
发生了AarryIndexOutOfBoundsException异常"
catch(Exceptione)
//前两个catch块均无法捕获try块中发生的异常时,才会执行该catch块。
发生了异常"
finally
ExecutedFinally"
4.答:
答案:
throws代表一种状态,代表方法可能有异常抛出,用在方法声明中可以抛出多个异常!
5.答案:
没有用throws声明要抛出的异常!
6.略
第五章
2.√
1.D2.A3.D
答:
有init、start和paint三种方法。
importjava.applet.*;
importjava.awt.*;
publicclassHelloextendsApplet
publicvoidpaint(Graphicsg)
g.drawingString(“欢迎学习Java!
”,1050);
<
Appletcode=“Hello.class”width=400height=150>
/Applet>
第六章
1.答案:
图像用户界面,使用图形的方式,借助菜单、按钮等标准界面元素和鼠标操作,帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果以图形的方式显示给用户。
字符界面使用单纯的字符作为计算机系统的输入输出。
对于熟悉字符命令的用户,它可以提供更加强大、复杂的操作灵活性,但是不能处理非文字的信息,而且不如图形界面方便、直观、友好。
图形界面中常用的组件有菜单、文本域、标签、选择钮、列表、按钮、滚动条等。
2.答案:
Java中图形界面的构成成分可以大致分类:
容器、控制组件、用户自定义成分。
容器用来包容和组织其他界面成分;
控制组件是完成与用户交互的最小单元;
用户自定义成分通常只有显示功能,不能接收用户的输入。
设计和实现图形用户界面的工作主要有两个:
创建、组织各成分和定义各成分的功能,即它们对事件的响应。
3.答案:
事件处理的特殊之处在于其操作的启动不是主动地掌握在程序流程中,而是由与程序交互的用户在使用程序时即兴决定的。
相应地,事件处理机制必须具有监听的功能,以便随时监测用户的动作。
要实现监听功能,必须有事先定义好的事件,并规定不同事件由什么事件源产生,有什么监听者处理。
事件源是可能产生事件的图形用户界面组件。
监听者定义了处理事件源所产生的事件的操作,把事件源注册给按事件类型匹配的监听者后,系统在监听到事件源产生的事件后自动调用监听者中定义的操作完成交互过程,这就是Java的事件处理机制。
把事件源注册给监听者,让监听者处理事件,称为委托事件模型。
能够产生事件的就时间源,实现了处理事件的接口的就是监听者。
在Java图形用户界面中,事件源通常是各种控制组件,监听者通常是各种容器相关。
4.答案:
按钮(Button)、文本组件(TextField,TextArea)、列表(List)和菜单选项(MenuItem)都是动作事件源。
响应动作事件需要注册动作事件源,实现actionPerformed()方法。
①需要new来实例化对象。
②Jlale是类名,不能用作变量名。
③传送构造函数的参数颠倒了。
第一个参数必须是String。
④已经设置了GrideLayout布局管理器,但添加的构件没有指定区域。
正确的add语句应为:
c.add(button1,BorderLayout.NORTH);
c.add(button2,BorderLayout.NORTH);
6.答案:
源程序:
Luoxuan.java
importjava.awt.*;
importjava.applet.Applet;
publicclassLuoxuanextendsApplet
intwidth=50,height=50;
intx=100,y=70;
intstartA=0;
publicvoidpaint(Graphicsg)
for(inti=0;
10;
i++)
g.drawArc(x,y,width,height,startA,90);
if(i%2==0)
width+=20;
x-=10;
else
height+=20;
y-=10;
startA=(startA+90)%360;
7.答案:
Xianshi.java
importjava.applet.*;
publicclassXianshiextendsApplet
LabelredLbl=newLabel("
红色"
);
LabelyellowLbl=newLabel("
黄色"
LabelblueLbl=newLabel("
蓝色"
publicvoidinit()
redLbl.setBackground(Color.red);
yellowLbl.setBackground(Color.yellow);
blueLbl.setBackground(Color.blue);
add(redLbl);
add(yellowLbl);
add(blueLbl);
8.答案:
Suofang.java
importjava.awt.event.*;
publicclassSuofangextendsAppletimplementsActionListener
StringmsgString="
SEEME?
AMICLEARENOUGH?
;
ButtonenlargeBtn=newButton("
放大"
ButtondwindleBtn=newButton("
缩小"
intcurrentFontSize=12;
add(enlargeBtn);
add(dwindleBtn);
currentFontSize=12;
enlargeBtn.addActionListener(this);
dwindleBtn.addActionListener(this);
FontnewFont,oldFont;
oldFont=g.getFont();
newFont=newFont(oldFont.getFontName(),oldFont.getStyle(),currentFontSize);
g.setFont(newFont);
g.drawString(msgString,10,100);
publicvoidactionPerformed(ActionEventae)
if(ae.getSource()==enlargeBtn)currentFontSize++;
elseif(ae.getSource()==dwindleBtn)currentFontSize--;
System.out.println(currentFontSize);
repaint();
9.答案:
Xuanzhuan.java
publicclassXuanzhuanextendsAppletimplementsActionListener
Image[]m_Images;
inttotalImages=18;
intcurrentImage=0;
intframeChange=0;
ButtonleftRotateBtn=newButton("
左旋"
ButtonrightRotateBtn=newButton("
右旋"
m_Images=newImage[totalImages];
TOTALIMAGES;
i++)m_Images[i]=getImage(getDocumentBase(),"
images\\Img00"
+(i+1)+"
.gif"
add(leftRotateBtn);
add(rightRotateBtn);
leftRotateBtn.addActionListener(this);
rightRotateBtn.addActionListener(this);
publicvoidstart()
currentImage=0;
g.drawImage(m_Images[currentImage],50,50,this);
currentImage=currentImage+frameChange;
if(currentImage<
0)
currentImage+=totalImages;
currentImage%=totalImages;
Thread.sleep(50);
catch(InterruptedExceptione)
showStatus(e.toString());
if(ae.getSource()==leftRotateBtn)frameChange=-1;
elseif(ae.getSource()==rightRotateBtn)frameChange=1;
第七章
1.×
2.√3.√4.√5.×
6.√
1.A,D2.A3.C4.A,B,C5.B
三.问答题
1.答案:
Java的输入输出类库是Java.io包。
Java的基本输入输出类是类InputStream和OutputStream类。
流式输入输出的一大特点是数据的写入、读取都是沿着数据流序列的顺序进行。
知识点:
Java的基本输入输出类的概念及流式输入输出的特点。
Java程序使用File类来管理和处理文件。
下面的语句可以在C盘的windows目录下创建myJavaPath子目录:
FilemyDir=newFile(“C:
\windows\myJavaPath”);
If(!
MyDir.exist())
MyDir.mkdir();
File类的使用及创建子目录的方法。
publicclassInputInteger
publicstaticvoidmain(Stringargs[])throwsIOException
inti=0;
BufferedReaderr