JAVA实验+答案.docx

上传人:b****2 文档编号:1759286 上传时间:2023-05-01 格式:DOCX 页数:28 大小:24.97KB
下载 相关 举报
JAVA实验+答案.docx_第1页
第1页 / 共28页
JAVA实验+答案.docx_第2页
第2页 / 共28页
JAVA实验+答案.docx_第3页
第3页 / 共28页
JAVA实验+答案.docx_第4页
第4页 / 共28页
JAVA实验+答案.docx_第5页
第5页 / 共28页
JAVA实验+答案.docx_第6页
第6页 / 共28页
JAVA实验+答案.docx_第7页
第7页 / 共28页
JAVA实验+答案.docx_第8页
第8页 / 共28页
JAVA实验+答案.docx_第9页
第9页 / 共28页
JAVA实验+答案.docx_第10页
第10页 / 共28页
JAVA实验+答案.docx_第11页
第11页 / 共28页
JAVA实验+答案.docx_第12页
第12页 / 共28页
JAVA实验+答案.docx_第13页
第13页 / 共28页
JAVA实验+答案.docx_第14页
第14页 / 共28页
JAVA实验+答案.docx_第15页
第15页 / 共28页
JAVA实验+答案.docx_第16页
第16页 / 共28页
JAVA实验+答案.docx_第17页
第17页 / 共28页
JAVA实验+答案.docx_第18页
第18页 / 共28页
JAVA实验+答案.docx_第19页
第19页 / 共28页
JAVA实验+答案.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

JAVA实验+答案.docx

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

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

Cylindercy1=newCylinder(27.3,32.7);

Cylindercy2=newCylinder(133.5,155.8);

}

}

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

}

classSubClassextendsSuperClass

{

publicSubClass(Stringmsg)

{

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

}

}

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;

}

}

}

【运行结果】

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

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];

}

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];

}

}

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类派生的。

5.下列哪个方法可以将MenuBar加入Frame中(D)?

A.setMenu()B.addMenuBar()C.add()D.setMenuBar()

【解析】可以将MenuBar加入Frame中的方法是setMenuBar()。

6.下列叙述中,错误的一项是(D

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2