武汉科技大学 Java实验报告实验四Word格式文档下载.docx

上传人:b****5 文档编号:21309795 上传时间:2023-01-29 格式:DOCX 页数:14 大小:101.47KB
下载 相关 举报
武汉科技大学 Java实验报告实验四Word格式文档下载.docx_第1页
第1页 / 共14页
武汉科技大学 Java实验报告实验四Word格式文档下载.docx_第2页
第2页 / 共14页
武汉科技大学 Java实验报告实验四Word格式文档下载.docx_第3页
第3页 / 共14页
武汉科技大学 Java实验报告实验四Word格式文档下载.docx_第4页
第4页 / 共14页
武汉科技大学 Java实验报告实验四Word格式文档下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

武汉科技大学 Java实验报告实验四Word格式文档下载.docx

《武汉科技大学 Java实验报告实验四Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《武汉科技大学 Java实验报告实验四Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。

武汉科技大学 Java实验报告实验四Word格式文档下载.docx

步骤(4):

在main方法中分别调用以上三个方法。

步骤(5):

将文件保存为TestException.java,然后编译、调试应用程序。

步骤(6):

将outofBound()方法中捕获异常的语句注释掉,重新编译程序,看看会不会有什么语法错误?

如果没错误,执行程序看结果有什么不同?

步骤(7):

将array方法重新定义为如下形式:

voidarraySize()throwsNegativeArraySizeException{……}

然后修改arraySize方法中捕获NegativeArraySizeException异常的语句执行部分。

程序代码:

publicclassTestException{

publicstaticvoidmain(String[]args){

arraySize();

outofBound();

nullPointer();

}

staticvoidarraySize()throwsNegativeArraySizeException{

try{

intArray[]=newint[-1];

}catch(NegativeArraySizeExceptione){

System.out.println("

数组大小异常:

"

+e);

}

staticvoidoutofBound()

{

try{

inti;

intArray[]=newint[3];

for(i=0;

i<

=3;

i++){Array[i]=i;

}catch(IndexOutOfBoundsExceptione){

System.out.println("

数据溢出:

}

staticvoidnullPointer(){

Strings;

inta;

s=null;

a=s.length();

}catch(NullPointerExceptione){

调用对象为空:

}

程序截图:

1、编写程序实现如下功能:

计算两个数之和,参与求和运算的每个数的值都必须在10-20之间,当任意一个数超出范围时,抛出自己的异常。

基于系统异常类Exception,定义自己的异常类NumberRangeException。

定义包含main方法的Application类SelfException。

在SelfException类中添加公共方法:

PublicstaticintselfExceptionTest

(intint1,intint2)throwsNumberRangeException使之能在求int1,int2两个数和之前检查两个数的数值范围,若符合条件则求和,否则抛出异常NumberRangeException。

在main方法中调用selfExceptionTest方法。

保存文件为SelfException.java,然后编译并调试程序。

修改main方法中调用selfExceptionTest方法的实参,看看程序的运行结果有什么不同。

classNumberRangeExceptionextendsException{

staticinta,b;

publicNumberRangeException(Stringmessage,inta,intb){

super(message);

this.a=a;

this.b=b;

publicclassSelfException{

publicstaticvoidselfExceptionTest(inta,intb)throwsNumberRangeException{

if((a<

10||a>

20)||(b<

10||b>

20))

{thrownewNumberRangeException("

数值超出指定范围"

a,b);

System.out.println("

a="

+a+"

"

+"

b="

+b+"

\n"

sum="

+(a+b));

publicvoidGetSum(){

try{selfExceptionTest(1,100);

}catch(NumberRangeExceptione){

System.out.println("

+NumberRangeException.a+"

b="

+NumberRangeException.b+"

+e"

);

}

publicstaticvoidmain(String[]args){

SelfExceptionnum=newSelfException();

num.GetSum();

(第一次设a=1,b=100;

第二次设a=15,b=15。

思考题:

1、翻译下列常用异常类的描述信息

OutOfMemoryError

 

Aclassinstancecreationexpression,arraycreationexpression,orstringconcatenationoperatiorexpressionthrowsanOutOfMemoryErrorifthereisinsufficientmemoryavailable.

如果没有足够的可用内存,一个类的实例创建表达式,数组创建表达式,或字符串串联操作表达会抛出一个OutOfMemoryError。

NegativeArraySizeException

 

AnarraycreationexpressionthrowsaNegativeArraySizeExceptionifthevalueofanydimensionexpressionislessthanzero.

一个数组创建表达式会抛出一个NegativeArraySizeException如果任何维度表达的数值小于零。

NullPointerException 

AfieldaccessthrowsaNullPointerExceptionifthevalueoftheobjectreference 

expressionisnull.

AmethodinvocationexpressionthatinvokesaninstancemethodthrowsaNullPointerExceptionifthetargetreferenceisnull.

AnarrayaccessthrowsaNullPointerExceptionifthevalueofthearrayreference 

一个字段访问抛出NullPointerException如果对象的值引用表达式是null。

一个方法调用,调用一个实例方法表达抛出NullPointerException如果目标参考是null。

一个数组访问抛出NullPointerException如果值的数组引用表达式是null。

ArrayIndexOutOfBoundsException

AnarrayaccessthrowsanArrayIndexOutOfBoundsExceptionifthevalueofthearrayindexexpressionisnegativeorgreaterthanorequaltothelengthofthearray.

一个数组访问抛出一个ArrayIndexOutOfBoundsException如果值的数组索引表达式是负面的或大于或等于数组的长度。

ClassCastException

Throwntoindicatethatthecodehasattemptedtocastanobjecttoasubclassofwhichitisnotaninstance.Forexample,thefollowingcodegeneratesaClassCastException:

Objectx=newInteger(0);

System.out.println((String)x);

抛出指示代码试图创建一个对象的一个子类,它不是一个实例。

例如,下面的代码生成一个ClassCastException异常:

System.out.println((String)x)

ArithmeticException

Thrownwhenanexceptionalarithmeticconditionhasoccurred.Forexample,aninteger"

dividebyzero"

throwsaninstanceofthisclass.

一个非凡的算术条件时抛出发生。

例如,一个整数”除以零”抛出一个这个类的实例。

ArrayStoreException 

AnassignmenttoanarraycomponentofreferencetypethrowsanArrayStoreExceptionwhenthevaluetobeassignedisnotcompatiblewiththecomponenttypeofthearray.

一个赋值数组组件的引用类型抛出一个ArrayStoreException当价值分配是不兼容的组件类型数组。

NoSuchFieldException

Signalsthattheclassdoesn'

thaveafieldofaspecifiedname.

提示:

在类中没有一个方法指定为该名称。

NoSuchMethodException

Thrownwhenaparticularmethodcannotbefound.

抛出它,当该方法不能被找到的时候。

NumberFormatException

Throwntoindicatethattheapplicationhasattemptedtoconvertastringtooneofthenumerictypes,butthatthestringdoesnothavetheappropriateformat.

抛出它,当确定应用程序试图将字符串转换成数值类型之一,但是,字符串没有适当

的格式。

FileNotFoundException

Signalsthatanattempttoopenthefiledenotedbyaspecifiedpathnamehasfailed.

试图打开文件,表明一个指定的路径名已经失败了。

IOException

SignalsthatanI/Oexceptionofsomesorthasoccurred.ThisclassisthegeneralclassofexceptionsproducedbyfailedorinterruptedI/Ooperations.

提示:

一个I/O信号发生某种异常。

这个类是一般类的异常产生的失败或中断I/O操作。

2、编写一个程序,用于根据用户输入的命令行参数数量来计算长方形、正方形、三角形的面积。

如果输入的参数个数为1、2、3则它们应分别对应正方形、长方形、三角形,如果参数值为0,则异常处理方法显示错误消息。

[提示]:

自己定义一个异常类,表示参数个数0这一异常。

然后定义一个抽象的父类,并提供一个抽象的方法area(),再派生出三个子类,重写area方法,最后在main方法中编写测试逻辑。

importjava.util.Scanner;

classMyExceptionextendsException{

publicvoidMyException(inti){

if(i==0){

输入出错!

请重新输入:

abstractclassarea{

abstractvoidarea();

classRectangleAreaextendsarea{

intarea(inta,intb){

intarea=a*b;

returnarea;

classSquareAreaextendsarea{

intarea(inta){

intarea=a*a;

voidarea(){}

classTriangleAreaextendsarea{

doublearea(inta,intb,intc){

doublep=0.5*(a+b+c);

doublearea=Math.sqrt(p*(p-a)*(p-b)*(p-c));

voidarea(){}

publicclassCountAreaextendsMyException{

staticinta,b,c,i;

staticints[]={a,b,c};

staticMyExceptionme=newMyException();

publicstaticvoidmain(Stringargs[])throwsMyException{

Scannersca=newScanner(System.in);

if(sca.equals(null)){

me.MyException(0);

else{while(true){

输入若干整数,用空格隔开,以Enter结束"

Stringnum=sca.nextLine();

num=num.toLowerCase();

if(num.equals("

Enter"

)){

break;

String[]strs=num.split("

i=strs.length;

if(i==1){

SquareAreasa=newSquareArea();

intarea=sa.area(Integer.parseInt(strs[0]));

System.out.println("

正方形面积为"

+area);

if(i==2){

RectangleAreara=newRectangleArea();

intarea=ra.area(Integer.parseInt(strs[0]),Integer.parseInt(strs[1]));

长方形面积为"

if(i==3){

TriangleAreata=newTriangleArea();

doublearea=ta.area(Integer.parseInt(strs[0]),Integer.parseInt(strs[1]),Integer.parseInt(strs[2]));

三角形面积为"

}

实验总结:

这一次实验与以往实验内容有很大的不同,先前三次实验都进行程序的编写,利用JAVA的一系列特点编写出要求的程序;

而此次JAVA实验是专门令程序逻辑错误,然后利用编写的异常类代码对异常进行抛出处理。

JAVA自带了许多异常类的代码,能否利用自身代码处理很多逻辑错误,所以此次实验并非和往常一样着重在方法的定义上面,而是更多在方法的调用上面。

另一方面,JAVA虽然自带了许多异常类,但是用户能够自行编写异常类和继承自带异常类然后进行扩展,这里再一次体现了JAVA程序的灵活。

通过上机,我熟悉了throw、try、catch等命令的使用,并且加深对异常处理的理解。

此次实验的思考题难度较大,翻译题在让我们熟悉JAVA异常命令的同时还检测了我们的英文水平,编程的思考题对我们JAVA水平提出了较高的要求,不仅涉及到类的继承、异常处理和累的具体化等内容,还涉及到键盘输入等以前不太了解的命令。

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

当前位置:首页 > 教学研究 > 教学计划

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

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