java实验2实验报告1.docx
- 文档编号:7318703
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:7
- 大小:172.11KB
java实验2实验报告1.docx
《java实验2实验报告1.docx》由会员分享,可在线阅读,更多相关《java实验2实验报告1.docx(7页珍藏版)》请在冰豆网上搜索。
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.
-全文完-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 实验 报告