java实验2实验报告1.docx

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

java实验2实验报告1.docx

《java实验2实验报告1.docx》由会员分享,可在线阅读,更多相关《java实验2实验报告1.docx(7页珍藏版)》请在冰豆网上搜索。

java实验2实验报告1.docx

java实验2实验报告1

 

java实验2实验报告

 

 

 

 

 

 

 

实验指导书

实验名称:

包、接口与异常处理学时安排:

2

实验类别:

综合设计型实验实验要求:

1人1组

 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

一、实验目的

1、掌握java字符串处理方法。

2、掌握java面向对象的概念。

3、掌握java自定义异常和处理。

4、通过实验,对Java程序的开发有一个深入了解。

二、实验内容

1.阅读并分析程序TestException.java。

(见附件PPT文件)

2.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数,输入的数据可能具有以下格式:

12345、12345、123xyz456

3.编写一个四则运算程序,要求用户输入一个x值和一个y值,以及一个四则运算符。

如果用户输入正确,则给出运算结果,如果输入错误,则给出出错警告。

(利用异常处理编程,尽量使用java现成的异常类,如没有可自定义异常类)

三、程序代码

1.

publicclassTestException{

publicTestException(){

}

booleantestEx()throwsException{

booleanret=true;

try{

ret=testEx1();

}catch(Exceptione){

System.out.println("testEx,catchexception");

ret=false;

throwe;

finally{

System.out.println("testEx,finally;returnvalue="+ret);returnret;

}

}

booleantestEx1()throwsException{

booleanret=true;

try{

ret=testEx2();

if(!

ret){

returnfalse;

}

System.out.println("testEx1,attheendoftry");

returnret;

}catch(Exceptione){

System.out.println("testEx1,catchexception");

ret=false;

throwe;

}

finally{

System.out.println("testEx1,finally;returnvalue="+ret);returnret;

}

}

booleantestEx2()throwsException{

booleanret=true;

try{

intb=12;

intc;

for(inti=2;i>=-2;i--){

System.out.println("i="+i);

}

returntrue;

}catch(Exceptione){

System.out.println("testEx2,catchexception");

ret=false;

throwe;

}

finally{

System.out.println("testEx2,finally;returnvalue="+ret);returnret;

}

}

publicstaticvoidmain(String[]args){

TestExceptiontestException1=newTestException();

try{

testException1.testEx();

}catch(Exceptione){

e.printStackTrace();

}

}

}

2.

importjava.util.*;

publicclasstest

{

publicstaticvoidmain(Stringargs[])

{

inti,number=0;

Stringstr;

for(i=0;i{

str=args[i];

number=Integer.parseInt(str);

System.out.printf("第%d个字符转换为整数后:

%d\n",i+1,number);}

}

catch(NumberFormatExceptione)

{

System.out.println("输入字符串不正确!

");

}

}

}

3.

importjava.io.*;

importjava.util.*;

publicclassExceptionExam

{

voidaddition(doublex,doubley)//加法运算

{

System.out.println("x+y="+(x+y));

}

voidsubtraction(doublex,doubley)//减法运算

{

System.out.println("x-y="+(x-y));

}

voiddivision(doublex,doubley)//除法运算

{

doublez;

if(y==0)

{

thrownewArithmeticException();

}

z=x/y;

System.out.println("x/y="+z);

}

catch(ArithmeticExceptione)

{

System.out.println("被零除");

}

}

voidmultiplication(doublex,doubley)//乘法运算{

System.out.println("x*y="+(x*y));

}

publicstaticvoidmain(Stringargs[])

{

ExceptionExamexception=newExceptionExam();

Stringstandard;

doublex,y;

do{

Scannerreader=newScanner(System.in);

try{

System.out.println("请输入x:

");

x=reader.nextDouble();

System.out.println("请输入y:

");

y=reader.nextDouble();

System.out.println("请输入四则运算符:

");

switch(z)

{

case'+':

exception.addition(x,y);

break;

case'-':

exception.subtraction(x,y);

break;

case'*':

exception.multiplication(x,y);

break;

case'/':

exception.division(x,y);

break;

default:

try

{

thrownewIOException();

}

catch(IOExceptione)

{

System.out.println("运算符输入错误");

}

}

}

catch(Exceptione)

{

System.out.println("输入的不是数值!

");

}

System.out.println("继续吗?

(输入no退出,输入其他则继续。

)");

standard=reader.nextLine();

}while(!

"no".equals(standard));

}

}

四、运行结果与测试分析

1.程序分析:

首先,在TestException这个类中除了main方法和一个无参数构造函数之外,还有另外3个方法:

testEx()、testEx1()和testEx2()。

它们的返回值都是布尔型,且都可能抛出异常。

程序从main方法开始执行,首先创建了一个TestException类的对象testException1,然后进入try语句块,用对象testException1调用函数testEx,程序开始执行testEx函数的函数体。

在函数testEx的try块中调用了函数testEx1,于是又转向执行testEx1的函数体,但在它的try块中又调用了testEx2(),于是程序转向执行testEx2的函数体。

在testEx2的try块中的for循环中,前两次循环正常执行,分别输出i=2和i=1,但第三次循环时出错(出现了除数i为0的情况),抛出异常并被本函数中的catch语句捕获,输出“testEx2,catchexception”,把ret的值赋成false,并抛出原异常,但在离开本函数之前还要执行finally中的语句,于是输出“testEx2,finally;returnvalue=false”并返回ret的值false,由于finally语句中使用了return语句,所以导致异常丢失,接着程序返回testEx2的调用者testEx1中,由于testEx2的返回值为false,故testEx1中的ret为false,if语句条件为真,返回false,但在离开testEx1之前,要执行finally中的语句,于是输出“testEx1,finally;returnvalue=false”并返回ret的值false(由于finally语句中使用了return语句,所以try区域中return语句的返回值被覆盖)。

流程转到testEx中,由于testEx1返回false,故testEx中的ret为false,接着执行finally中的语句,输出“testEx,finally;returnvalue=false”并返回ret的值false。

接着流程返回到main函数中,程序正常结束。

运行结果截图如下:

2.运行结果截图如下:

3.

-全文完-

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

当前位置:首页 > 高等教育 > 理学

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

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