JAVA实验+答案.docx

上传人:b****5 文档编号:5794642 上传时间:2023-01-01 格式:DOCX 页数:24 大小:24.83KB
下载 相关 举报
JAVA实验+答案.docx_第1页
第1页 / 共24页
JAVA实验+答案.docx_第2页
第2页 / 共24页
JAVA实验+答案.docx_第3页
第3页 / 共24页
JAVA实验+答案.docx_第4页
第4页 / 共24页
JAVA实验+答案.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

JAVA实验+答案.docx

《JAVA实验+答案.docx》由会员分享,可在线阅读,更多相关《JAVA实验+答案.docx(24页珍藏版)》请在冰豆网上搜索。

JAVA实验+答案.docx

JAVA实验+答案

实验7

1.编一个程序,包含以下文件。

(1)Shape.java文件,在该文件中定义接口Shape,该接口在shape包中。

属性:

PI。

方法:

求面积的方法area()。

(2)Circle.java文件,在该文件中定义圆类Circle,该类在circle包中,实现Shape接口。

属性:

圆半径radius。

方法:

构造方法;实现接口中求面积方法area();求周长方法perimeter()。

(3)“Cylinder.java”文件,在该文件中定义圆柱体类Cylinder,该类口在cylinder包中,继承圆类。

属性:

圆柱体高度height。

方法:

构造方法;求表面积方法area();求体积方法volume()。

(4)X5_3_6.java文件,在该文件中定义主类X5_3_6,该类在默认包中,其中包含主方法main(),在主方法中创建两个圆类对象cir1和cir2,具体尺寸自己确定,并显示圆的面积和周长;再创建两个圆柱体类的对象cy1和cy2,具体尺寸自己确定,然后分别显示圆柱体cy1和cy2的底圆的面积和周长以及它们各自的体积和表面积。

【编程分析】本题主要考察接口、包、继承、封装等问题。

编程步骤如下:

第一步:

首先创建p1包,在其中创建Shape接口

//Shape.java文件

packagep1;//创建p1包

publicinterfaceShape{//定义Shape接口

}

第二步:

创建Circle类和Cylinder类,它们都定义在p2包中。

//Circle.java文件

packagep2;//创建p2包

importp1.*;

publicclassCircleimplementsShape{//定义实现Shape接口的Circle类

}

//Cylinder.java文件

packagep2;

publicclassCylinderextendsCircle{//创建继承Circle类的Cylinder类

}

第三步:

创建主类,在其中的main()方法中创建对象,实现相应的功能。

//X5_3_6.java文件

packagep3;

importp2.*;

publicclassX5_3_6{//定义主类

publicstaticvoidmain(String[]args){

}

}

【参考程序】

//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());

}

}

//Shape.java文件

packagep1;//创建p1包

publicinterfaceShape{//定义Shape接口

doublePI=Math.PI;

doublearea();//求面积方法

}

//Circle.java文件

packagep2;//创建p2包

importp1.*;

publicclassCircleimplementsShape{//定义实现Shape接口的Circle类

doubleradius;//半径

publicCircle(doubler){

radius=r;

}

publicdoublearea(){//实现Shape接口中的方法(这是必须的)

returnPI*radius*radius;

}

publicdoubleperimeter(){//定义求圆周长的方法

return2*PI*radius;

}

}

//Cylinder.java文件

packagep2;

publicclassCylinderextendsCircle{//创建继承Circle类的Cylinder类

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

{

publicvoiddisp(intn)

{

longpro=1;

for(inti=1;i<=n;i++)

{

pro=pro*i;

}

}

}

publicclassinterfaceTest{

publicstaticvoidmain(String[]args){

//TODOcodeapplicationlogichere

Sumx=newSum();

x.disp(100);

}

}

3)改错,上传正确答案,并以注释形式给出错误原因

classSuperClass

{

publicSuperClass(Stringmsg)

{constructor:

"+msg);}

}

classSubClassextendsSuperClass

{

publicSubClass(Stringmsg)

{

Super(msg);//父类没有无参的构造方法,应采用super显示调用父类的构造方法

constructor");

}

}

publicclassTest1{

publicstaticvoidmain(String[]args){

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.运行下面程序时,会产生什么异常?

(A)

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.运行下面程序时,会产生什么异常?

(C)

publicclassX7_1_5{

publicstaticvoidmain(String[]args){

int[]z={1,2,3,4};

intp=z[4];

intx=0;

inty=5/x;

}

}

A.ArithmeticExceptionB.NumberFormatException

C.ArrayIndexOutOfBoundsExceptionD.IOException

【解析】当程序执行到“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{

publicstaticvoidmain(String[]args){

int[]a=newint[-5];

for(inti=0;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;i

a[i]=10+i;

}

}

}

【运行结果】

8

Exceptioninthread"main"

atC1.main(C1.java:

9)

3.编写一个系统自动抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。

【编程分析】

当在try语句块中出现分母为0的情况时,如果在catch参数中有ArithmeticException对象,则就能捕捉到该异常并进行处理;同样,当在try语句块中出现分母为数组下标越界的情况时,如果在catch参数中有ArrayIndexOutOfBoundsException对象,则就能捕捉到该异常并进行处理。

【参考程序】

importjava.io.*;

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{//当出现数组下标越界时就会抛出异常

for(inti=0;i<5;i++)sum+=c[i];

"sum="+sum);

}

catch(ArrayIndexOutOfBoundsExceptione){//捕捉数组下标越界异常并处理

}

}

}

【运行结果】

请输入两个整数:

20

0

出现被0除的情况!

数组下标越界!

4.编写一个由throw抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。

【编程分析】

当在程序出现异常之前利用throw语句来抛出异常,可以做到防患于未然,提前进行异常处理,将由被动处理异常转变为主动防止异常发生。

【参考程序】

importjava.io.*;

publicclassX7_3_4{

publicstaticvoidmain(Stringargs[])throwsIOException{

InputStreamReaderisr=newInputStreamReader(System.in);

BufferedReaderbr=newBufferedReader(isr);

inta=Integer.parseInt(br.readLine());

intb=Integer.parseInt(br.readLine());

try{

if(b==0)

thrownewArithmeticException("抛出算术异常");

}

catch(ArithmeticExceptione){

e.printStackTrace();

}

intc[]={1,2,3,4},sum=0;

try{

for(inti=0;i<5;i++){

if(i>=4)

thrownewArrayIndexOutOfBoundsException("抛出数组下标越界异常");

sum+=c[i];

"sum="+sum);

}

}

catch(ArrayIndexOutOfBoundsExceptione){

e.printStackTrace();

}

}

}

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(){

super("发生数字太小异常");

}

}

第三步:

在主类X7_3_5中定义numberException()方法。

publicstaticvoidnumberException(intx)

throwsNumberTooBigException,NumberTooSmallException{

if(x>100)

thrownewNumberTooBigException();

elseif(x<0)

thrownewNumberTooSmallException();

else

}

第四步:

在main()方法中调用numberException()方法并捕捉和处理由此方法引起的异常。

【参考程序】

importjava.io.*;

publicclassX7_3_5{

publicstaticvoidmain(Stringargs[])throwsIOException{

InputStreamReaderisr=newInputStreamReader(System.in);

BufferedReaderbr=newBufferedReader(isr);

inta=Integer.parseInt(br.readLine());

try{

numberException(a);

}catch(NumberTooBigExceptione){

e.printStackTrace();

}catch(NumberTooSmallExceptione){

e.printStackTrace();

}

}

publicstaticvoidnumberException(intx)throwsNumberTooBigException,NumberTooSmallException{

if(x>100)

thrownewNumberTooBigException();

elseif(x<0)

thrownewNumberTooSmallException();

else

}

}

classNumberTooBigExceptionextendsException{

NumberTooBigException(){

super("发生数字太大异常");

}

}

classNumberTooSmallExceptionextendsException{

NumberTooSmallException(){

super("发生数字太小异常");

}

}

实验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.当单击鼠标或拖动鼠标时,触发的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1