java实验2实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

reader=new Scanner(System.in); 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,catch exception”,把 ret 的值赋成 false,并抛出原异常,但在离开本 函数之前还要执行 finally 中的语句,于是输出“testEx2,finally; return value=false” 并返回 ret 的值 false,由于 finally 语句中使用了 return 语句,所以导致异常丢失,接 着程序返回 testEx2 的调用者 testEx1 中,由于 testEx2 的返回值为 false,故 testEx1 中的 ret 为 false,if 语句条件为真,返回 false,但在离开 testEx1 之前,要执行 finally 中的语句,于是输出“testEx1,finally; return value=false”并返回 ret 的值 false (由于 finally 语句中使用了 return 语句,所以 try 区域中 return 语句的返回值被覆盖)。 流程转到 testEx 中,由于 testEx1 返回 false,故 testEx 中的 ret 为 false,接着执行 finally 中的语句,输出“testEx,finally;return value=false”并返回 ret 的值 false。 接着流程返回到 main 函数中,程序正常结束。运行结果截图如下:
public TestException() { } boolean testEx() throws Exception{
boolean ret = true; Leabharlann Baidury{
ret = testEx1(); }catch (Exception e){
System.out.println("testEx, catch exception"); ret = false; throw e;
try { if(y==0) { throw new ArithmeticException(); } z=x/y; System.out.println("x/y="+z); } catch (ArithmeticException e) { System.out.println("被零除"); } } void multiplication(double x,double y) //乘法运算 { System.out.println("x*y="+(x*y)); } public static void main(String args[]) { ExceptionExam exception=new ExceptionExam(); String standard; double x,y; do{ Scanner reader=new Scanner(System.in); try{ System.out.println("请输入 x:"); x=reader.nextDouble(); System.out.println("请输入 y:"); y=reader.nextDouble(); System.out.println("请输入四则运算符:");
} finally{
System.out.println("testEx, finally; return value="+ret); return ret; } } boolean testEx1() throws Exception{ boolean ret = true; try{ ret = testEx2(); if (!ret){ return false; } System.out.println("testEx1, at the end of try"); return ret; }catch (Exception e){ System.out.println("testEx1, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx1, finally; return value="+ret); return ret; } } boolean testEx2() throws Exception{ boolean ret = true; try{ int b=12; int c; for (int i=2;i>=-2;i--){
c=b/i; System.out.println("i="+i); } return true; }catch (Exception e){ System.out.println("testEx2, catch exception"); ret = false; throw e; } finally{ System.out.println("testEx2, finally; return value="+ret); return ret; } } public static void main(String[] args) { TestException testException1 = new TestException(); try{ testException1.testEx(); }catch(Exception e){ e.printStackTrace(); } } } 2. import java.util.*; public class test { public static void main(String args[]) { int i, number=0; String str;
char z=reader.next().charAt(0); 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 { throw new IOException(); } catch(IOException e) { System.out.println("运算符输入错误"); } } } catch (Exception e) { System.out.println("输入的不是数值!"); } System.out.println("继续吗?(输入 no 退出,输入其他则继续。)");
2.运行结果截图如下:
3.
实验指导书
实验名称:包、接口与异常处理
学时安排:2
实验类别:综合设计型实验
实验要求:1 人 1 组
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 一、实验目的 1、掌握 java 字符串处理方法。 2、掌握 java 面向对象的概念。 3、掌握 java 自定义异常和处理。 4、 通过实验,对 Java 程序的开发有一个深入了解。 二、实验内容 1.阅读并分析程序 TestException.java。(见附件 PPT 文件) 2.设计一个程序,其功能是从命令行输入整数字符串,再将该整数字符串转换为整数,输 入的数据可能具有以下格式:12345、123 45、123xyz456 3.编写一个四则运算程序,要求用户输入一个 x 值和一个 y 值,以及一个四则运算符。如 果用户输入正确,则给出运算结果,如果输入错误,则给出出错警告。(利用异常处理编程, 尽量使用 java 现成的异常类,如没有可自定义异常类 ) 三、程序代码 1. public class TestException {
try { for(i=0;i<args.length;i++) { str=args[i]; number=Integer.parseInt(str); System.out.printf("第%d 个字符转换为整数后:%d\n",i+1,number); } } catch(NumberFormatException e) { System.out.println("输入字符串不正确!"); } } } 3. import java.io.*; import java.util.*; public class ExceptionExam { void addition(double x,double y) //加法运算 { System.out.println("x+y="+(x+y)); } void subtraction(double x,double y) //减法运算 { System.out.println("x-y="+(x-y)); } void division(double x,double y) //除法运算 { double z;
相关文档
最新文档