JAVA实验79+答案文档格式.docx
- 文档编号:16992216
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:25
- 大小:71.14KB
JAVA实验79+答案文档格式.docx
《JAVA实验79+答案文档格式.docx》由会员分享,可在线阅读,更多相关《JAVA实验79+答案文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
创建Circle类和Cylinder类,它们都定义在p2包中。
//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);
System.out.println("
cir1.area:
"
+cir1.area());
cir1.perimeter:
+cir1.perimeter());
cir2.area:
+cir2.area());
cir2.perimeter:
+cir2.perimeter());
Cylindercy1=newCylinder(27.3,32.7);
Cylindercy2=newCylinder(133.5,155.8);
cy1.area:
+cy1.area());
cy1.volume:
+cy1.volume());
cy2.area:
+cy2.area());
cy2.volume:
+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;
}
System.out.println(sum);
classProimplementsOneToN
longpro=1;
pro=pro*i;
System.out.println(pro);
publicclassinterfaceTest{
//TODOcodeapplicationlogichere
Sumx=newSum();
x.disp(100);
3)改错,上传正确答案,并以注释形式给出错误原因
classSuperClass
publicSuperClass(Stringmsg)
{System.out.println("
SuperClassconstructor:
+msg);
classSubClassextendsSuperClass
publicSubClass(Stringmsg)
{
Super(msg);
//父类没有无参的构造方法,应采用super显示调用父类的构造方法
System.out.println("
SubClassconstructor"
);
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{
System.out.println("
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.length;
i++){
a[i]=10+i;
【运行结果】
Exceptioninthread"
main"
java.lang.NegativeArraySizeException
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;
System.out.print(a[i]+"
\t"
System.out.println();
8
java.lang.ArrayIndexOutOfBoundsException
atC1.main(C1.java:
9)
3.编写一个系统自动抛出的、由try-catch捕捉处理的分母为0以及数组下标越界的程序。
当在try语句块中出现分母为0的情况时,如果在catch参数中有ArithmeticException对象,则就能捕捉到该异常并进行处理;
同样,当在try语句块中出现分母为数组下标越界的情况时,如果在catch参数中有ArrayIndexOutOfBoundsException对象,则就能捕捉到该异常并进行处理。
publicclassX7_3_3{
publicstaticvoidmain(Stringargs[])throwsIOException{
请输入两个整数:
"
inta=Integer.parseInt(br.readLine());
intb=Integer.parseInt(br.readLine());
try{//当输入的b为0时,就会出现算术异常
System.out.println(a/b);
catch(ArithmeticExceptione){//捕捉算术异常并进行处理
出现被0除的情况!
intc[]=newint[4],sum=0;
try{//当出现数组下标越界时就会抛出异常
for(inti=0;
5;
i++)sum+=c[i];
System.out.println("
sum="
+sum);
catch(ArrayIndexOutOfBoundsExceptione){//捕捉数组下标越界异常并处理
数组下标越界!
20
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;
i++){
if(i>
=4)
thrownewArrayIndexOutOfBoundsException("
抛出数组下标越界异常"
sum+=c[i];
System.out.println("
}
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{
InputStreamReaderisr=newInputStreamReader(Sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 实验 79 答案