信息工程学院
Java程序设计实验/实习报告
学院: 班级: 姓名: 学号: 成绩:
JAVA 输入输出流
一、实验/实习过程
(一)、实验目的
掌握Java的异常处理机制及相关实现方法能够在程序设计中熟练运用异常及相
关类及对象。
(二)实验过程
【实验题1】
在程序中产生一个ArithmeticException 类型被0除的异常,并用catch 语句
捕获这个异常。最后通过ArithmeticException 类的对象e 的方法getMessage
给出异常的具体类型并显示出来。
代码如下:
public class Example3_1 {
public static void main(String args[]){
int a=10,b=0;
int c;
try{
c=a/b;
}
catch(ArithmeticException e){
System.out.println("发生异常"+e.getMessage());
}
}
}
结果如下:
实验报告的内容与格式按任课教师的要求书写。
【实验题2】
在一个类的静态方法methodOne()方法内使用throw 产生异常,使用throws 子句抛出methodOne()的异常,在main方法中捕获处理异常。
代码如下:
public class Example3_2{
static void methodOne()throws ArithmeticException {
System.out.println("在methodOne中.");
throw new ArithmeticException ("算术错误");
}
public static void main(String args[]){
try{
methodOne();
}
catch(ArithmeticException e){
System.out.println("捕获"+e);
}
}
}
结果如下:
【实验题3】
编写一个程序,输入一个班某门课程成绩,统计及格人数、不及格人数平均分。设计一个异常类,当输入的成绩小0分或大于100分时,抛出异常,程序将捕捉这个异常,并作出相应处理。
代码如下:
Example3_3_1.java
import java.util.Scanner;
public class Example3_3_1 {
public static void main(String args[]){
int m;
int i;
Example3_3_2 main=new Example3_3_2();
System.out.println("请输入班级学生人数:");
Scanner scanner = new Scanner(System.in);
m= scanner.nextInt();
System.out.println("请输入"+m+"个学生的成绩,每行一个,按回车键结束:");
for(i=0;i float temp; try{ temp= scanner.nextInt(); main.chengji(temp); } catch(ScoreException e){ System.out.println(e.toString()); --i; } } System.out.println("及格人数: "+ main.n1); System.out.println("不及格人数: "+ main.n2); System.out.println("平均分: "+ main.Sum/m); } } ScoreException.java public class ScoreException extends Exception{ float score; ScoreException(float score){ this.score=score; } public String toString(){ return"您输入的成绩"+score+" 不合理,请重新输入:"; } } Example3_3.java public class Example3_3_2 { int n1; int n2; int Sum; public void chengji(float temp) throws ScoreException { if(temp>100 ||temp<0){ throw new ScoreException(temp); } else{ if(temp>=60){ n1++; } else{ n2++; } Sum+=temp; } } } 结果如下: 【实验题4】创建异常类的练习。需要使用3个Java程序来实现: Bank.java InsufficientFundsException.java ExceptionDemo.java 创建银行类Bank,包括如下的方法: Bank(double balance) deposite(double dAmount) withdrawal(double dAmount) show_balance() 创建异常类:InsufficientFundsException。若取钱数大于余额则作为异常处理。创建此异常类的思路是:(1)产生异常的条件是余额少于取额, 因此是否抛出异常要判断条件(注意throw的使用)。(2)取钱是withdrawal()方法中定义的动作,因此在该方法中产生异常。(3)处理异常安排在调用withdrawal()的时候,因此withdrawal()方法要声明异常,由上级方法调用(注意throws的使用)。创建此异常类的具体要求:异常类中需添加 excepMesagge()方法,用于调用Bank类的show_balance()方法,显示“您的取款金额为XXX,但是账户余额仅为XXX,操作不合法!”。 创建主类: ExceptionDemo,用于测试新创建的两个类。注意try-catch语句的使用,并且在错误处理的catch块中,使用InsufficientFundsException 异常类的excepMesagge()方法以及Exception类(父类)的toString()方法。最后添加finally块,输出“操作退出!”。 代码如下: class Bank{ double balance; double dAmount; public Bank(double balance){ this.balance=balance; } public void deposite(double dAmount){ if(dAmount>0.0) balance=balance+dAmount; } public void withdrawal(double dAmount) throws InsufficientFundsException{ if(dAmount>balance) throw new InsufficientFundsException(this,dAmount); balance=dAmount-balance; } public double show_balance(){ return balance; } } class InsufficientFundsException extends Exception{ private Bank excepbank; private double excepAmount; InsufficientFundsException(Bank ba,double dAmount){ excepbank=ba; excepAmount=dAmount; } public void excepMesagge(){ System.out.println("您的取款金额为"+excepAmount+","+"但是您的账户余额仅为"+excepbank.show_balance()+",操作不合法!"); } } public class ExceptionDemo { public static void main(String []args){ Bank ba=new Bank(100.0); try { ba.withdrawal(400.0); } catch (InsufficientFundsException e) { System.out.println("toString():"); System.out.println(e.toString()); System.out.println("excepMesagge():"); e.excepMesagge(); } finally{ System.out.println("退出操作!"); } } } 结果如下: 二、实验/实习总结