JAVA实验+答案Word格式文档下载.docx
- 文档编号:18781706
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:24
- 大小:24.83KB
JAVA实验+答案Word格式文档下载.docx
《JAVA实验+答案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《JAVA实验+答案Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
//Circle.java文件
packagep2;
//创建p2包
importp1.*;
publicclassCircleimplementsShape{//定义实现Shape接口的Circle类
//Cylinder.java文件
publicclassCylinderextendsCircle{//创建继承Circle类的Cylinder类
第三步:
创建主类,在其中的main()方法中创建对象,实现相应的功能。
//X5_3_6.java文件
packagep3;
importp2.*;
publicclassX5_3_6{//定义主类
publicstaticvoidmain(String[]args){
…
【参考程序】
Circlecir1=newCircle(120.5);
Circlecir2=newCircle(183.8);
"
+cir1.area());
+cir1.perimeter());
+cir2.area());
+cir2.perimeter());
Cylindercy1=newCylinder(27.3,32.7);
Cylindercy2=newCylinder(133.5,155.8);
+cy1.area());
+cy1.volume());
+cy2.area());
+cy2.volume());
doublePI=Math.PI;
doublearea();
//求面积方法
doubleradius;
//半径
publicCircle(doubler){
radius=r;
}
publicdoublearea(){//实现Shape接口中的方法(这是必须的)
returnPI*radius*radius;
publicdoubleperimeter(){//定义求圆周长的方法
return2*PI*radius;
doubleheight;
publicCylinder(doubler,doubleh){
super(r);
height=h;
publicdoublearea(){
return2*PI*radius*radius+2*PI*radius*height;
publicdoublevolume(){
returnPI*radius*radius*height;
2)定义一个接口OneToN,在接口中包含一个抽象方法disp()。
定义Sum和Pro类,并分别用不同代码实现ONeToN的disp()方法,在Sum的方法中计算1~n的和,在Pro的方法中计算1~n的乘积
interfaceOneToN
{
publicvoiddisp(intn);
classSumimplementsOneToN
publicvoiddisp(intn)
{
intsum=0;
for(inti=1;
i<
=n;
i++)
{
sum=sum+i;
}
classProimplementsOneToN
longpro=1;
pro=pro*i;
publicclassinterfaceTest{
//TODOcodeapplicationlogichere
Sumx=newSum();
x.disp(100);
3)改错,上传正确答案,并以注释形式给出错误原因
classSuperClass
publicSuperClass(Stringmsg)
{constructor:
+msg);
classSubClassextendsSuperClass
publicSubClass(Stringmsg)
Super(msg);
//父类没有无参的构造方法,应采用super显示调用父类的构造方法
constructor"
);
publicclassTest1{
SubClassdescendent=newSubClass();
4)利用多态性编程,创建一个抽象类shape类,定义一个函数Area为求面积的公共方法,再定义Triangle,Rectangle和circle类,实现computerArea方法;
增加display方法,显示name和area,并在Triangle,Rectangle和circle类覆盖该方法,并为每个类增加自己的构造方法;
在主类中创建不同对象,求得不同形状的面积。
答案略。
实验8
一、选择题
1.关于异常的含义,下列描述中最正确的一个是(D)。
A.程序编译错误B.程序语法错误
C.程序自定义的异常事件D.程序编译或运行时发生的异常事件
【解析】异常就是程序编译或运行时发生的异常事件。
2.自定义异常时,可以通过对下列哪一项进行继承?
(C)
A.Error类B.Applet类
C.Exception类及其子类D.AssertionError类
【解析】自定义异常类时,该类必须继承Exception类及其子类。
3.对应try和catch子句的排列方式,下列哪一项是正确的?
(A)
A.子类异常在前,父类异常在后B.父类异常在前,子类异常在后
C.只能有子类异常D.父类和子类不能同时出现在try语句块中
【解析】对应try和catch子句的排列方式,要求子类异常(范围小的异常)在前,父类异常(范围大的异常)在后。
4.运行下面程序时,会产生什么异常?
publicclassX7_1_4{
publicstaticvoidmain(String[]args){
intx=0;
inty=5/x;
int[]z={1,2,3,4};
intp=z[4];
A.ArithmeticExceptionB.NumberFormatException
C.ArrayIndexOutOfBoundsExceptionD.IOException
【解析】当程序执行到“inty=5/x”语句时,发生异常,程序中止执行,因此发生ArithmeticException异常。
5.运行下面程序时,会产生什么异常?
publicclassX7_1_5{
【解析】当程序执行到“intp=z[4]”语句时,发生异常,程序中止执行,因此发生ArrayIndexOutOfBoundsException异常。
6.下列程序执行的结果是(B)。
publicclassX7_1_6{
publicstaticvoidmain(String[]args){
try{
return;
}
finally{
A.程序正常运行,但不输出任何结果B.程序正常运行,并输出Finally
C.编译通过,但运行时出现异常D.因为没有catch子句,因此不能通过编译
【解析】在执行try-catch-finally语句块时,最后必须执行finally语句块中的内容,而本程序没有异常发生,因此程序正常运行,并输出Finally。
7.下列代码中给出正确的在方法体内抛出异常的是(B)。
A.newthrowException("
B.thrownewException("
C.throwsIOException();
D.throwsIOException;
【解析】在方法体内抛出异常时只能使用throw,而不能使用throws,另外,“newException("
)”是创建一个异常,因此B是正确的。
8.下列描述了Java语言通过面相对象的方法进行异常处理的好处,请选出不在这些好处范围之内的一项(C)
A.把各种不同的异常事件进行分类,体现了良好的继承性
B.把错误处理代码从常规代码中分离出来
C.可以利用异常处理机制代替传统的控制流程
D.这种机制对具有动态运行特性的复杂程序提供了强有力的支持
【解析】异常处理机制不能代替传统的流程控制。
二、编程题
1.编写一个系统自动抛出的、系统自行处理的数组大小为负数的程序。
【编程分析】
当编写的程序中没有处理异常的语句时,系统会自动抛出异常,并自行进行处理。
publicclassX7_3_1{
int[]a=newint[-5];
for(inti=0;
a.length;
i++){
a[i]=10+i;
【运行结果】
Exceptioninthread"
main"
atX7_3_1.main(X7_3_1.java:
3)
2.编写一个由throw抛出的、系统自行处理的数组下标越界的程序。
当由throw抛出异常后,如果程序本身不进行异常处理,Java系统将采用默认的处理方式进行处理。
importjava.io.*;
publicclassX7_3_2{
publicstaticvoidmain(String[]args)throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
int[]a=newint[5];
intn=Integer.parseInt(br.readLine());
if(n>
5)//当输入的n值大于5时将由throw抛出异常
thrownewArrayIndexOutOfBoundsException();
程序继续执行"
for(inti=0;
n;
a[i]=10+i;
8
atC1.main(C1.java:
9)
3.编写一个系统自动抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。
当在try语句块中出现分母为0的情况时,如果在catch参数中有ArithmeticException对象,则就能捕捉到该异常并进行处理;
同样,当在try语句块中出现分母为数组下标越界的情况时,如果在catch参数中有ArrayIndexOutOfBoundsException对象,则就能捕捉到该异常并进行处理。
publicclassX7_3_3{
publicstaticvoidmain(Stringargs[])throwsIOException{
InputStreamReaderisr=newInputStreamReader(System.in);
BufferedReaderbr=newBufferedReader(isr);
inta=Integer.parseInt(br.readLine());
intb=Integer.parseInt(br.readLine());
try{//当输入的b为0时,就会出现算术异常
catch(ArithmeticExceptione){//捕捉算术异常并进行处理
intc[]=newint[4],sum=0;
try{//当出现数组下标越界时就会抛出异常
5;
i++)sum+=c[i];
sum="
+sum);
catch(ArrayIndexOutOfBoundsExceptione){//捕捉数组下标越界异常并处理
请输入两个整数:
20
出现被0除的情况!
数组下标越界!
4.编写一个由throw抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。
当在程序出现异常之前利用throw语句来抛出异常,可以做到防患于未然,提前进行异常处理,将由被动处理异常转变为主动防止异常发生。
publicclassX7_3_4{
try{
if(b==0)
thrownewArithmeticException("
抛出算术异常"
catch(ArithmeticExceptione){
e.printStackTrace();
intc[]={1,2,3,4},sum=0;
if(i>
=4)
thrownewArrayIndexOutOfBoundsException("
抛出数组下标越界异常"
sum+=c[i];
}
catch(ArrayIndexOutOfBoundsExceptione){
5.自定义两个异常类NumberTooBigException和NumberTooSmallException,在其中定义各自的构造方法,分别打印输出“发生数字太大异常”和“发生数字太小异常”。
然后在主类中定义一个带throws的方法numberException(intx),当x>
100时通过throw抛出NumberTooBigException异常,当x<
0时通过throw抛出NumberTooSmallException异常;
最后在main()方法中调用该方法,实现从键盘中输入一个整数,如果输入的是负数,引发NumberTooSmallException异常,如果输入的数大于100,引发。
NumberTooBigException异常,否则输出“没有发生异常”。
【编程分析】本题主要考察自定义异常的方法。
定义异常类NumberTooBigException
classNumberTooBigExceptionextendsException{
NumberTooBigException(){
super("
发生数字太大异常"
定义异常类NumberTooSmallException
classNumberTooSmallExceptionextendsException{
NumberTooSmallException(){
发生数字太小异常"
在主类X7_3_5中定义numberException()方法。
publicstaticvoidnumberException(intx)
throwsNumberTooBigException,NumberTooSmallException{
if(x>
100)
thrownewNumberTooBigException();
elseif(x<
0)
thrownewNumberTooSmallException();
else
第四步:
在main()方法中调用numberException()方法并捕捉和处理由此方法引起的异常。
publicclassX7_3_5{
numberException(a);
}catch(NumberTooBigExceptione){
}catch(NumberTooSmallExceptione){
publicstaticvoidnumberException(intx)throwsNumberTooBigException,NumberTooSmallException{
if(x>
thrownewNumberTooBigException();
elseif(x<
thrownewNumberTooSmallException();
else
实验9
1.下列说法中错误的一项是(B)。
A.构件是一个可视化的能与用户在屏幕上交互的对象
B.构件能够独立显示出来
C.构件必须放在某个容器中才能正确显示
D.一个按钮可以是一个构件
【解析】构件不能独立显示,它必须放在某个容器中才能正确显示。
2.进行Java基本GUI设计需要用到的包是(C)。
A.java.ioB.java.sqlC.java.awtD.java.rmi
【解析】进行Java基本GUI设计需要用到的包是java.awt和javax.swing
3.Container是下列哪一个类的子类(D)?
A.GraphicsB.WindowC.AppletD.Component
【解析】Container类是由Component类派生的。
B)。
Window
C.java.awt
Window。
5.下列哪个方法可以将MenuBar加入Frame中(D)?
A.setMenu()B.addMenuBar()C.add()D.setMenuBar()
【解析】可以将MenuBar加入Frame中的方法是setMenuBar()。
6.下列叙述中,错误的一项是(D)。
A.采用GridLayout布局,容器中的每个构件平均分配容器空间
B.采用GridLayout布局,容器中的每个构件形成一个网络状的布局
C.采用GridLayout布局,容器中的构件按照从左到右、从上到下的顺序排列
D.采用GridLayout布局,容器大小改变时,每个构件不再平均分配容器空间
【解析】采用GridLayout布局,容器大小改变时,每个构件平均分配容器空间。
7.当单击鼠标或拖动鼠标时,触发的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 答案