Java异常处理
题目一:
编写一个应用程序,模拟中介和购房者完成房屋购买过程。
共有一个接口和三个类:
- Business—— 业务接口
- Buyer —— 购房者类
- Intermediary—— 中介类
- Test —— 主类
代码:
1、Test.java
1 /** 2 * 主类Test,包含一个主方法; 3 * 创建购房者对象,实现买房过程,并输出中介费个契税; 4 */ 5 package cn.edu.ccut.object3; 6 import java.util.*; 7 8 public class Test { 9 public static void main(String[] args) { 10 double price; 11 Buyer buyer = new Buyer(); 12 buyer.name = "lisa"; 13 Scanner reader = new Scanner(System.in); 14 price = reader.nextDouble(); 15 buyer.buying(price); 16 Intermediary i = new Intermediary(buyer); 17 i.buying(price); 18 i.charing(price); 19 } 20 }
2、Bussiness.java
1 /** 2 * 业务接口,包含两个成员变量,一个方法; 3 * 成员变量RATIO代表房屋中介收取的中介费用占房屋标价的比例,TAX代表购房需要交纳的契税费用占房屋标价的比例; 4 */ 5 package cn.edu.ccut.object3; 6 7 public interface Business { 8 double RATIO = 0.022; 9 double TAX = 0.03; 10 void buying (double price); 11 }
3、Buye.java
1 /** 2 * 购房者类,一个成员变量,一个方法; 3 * 成员变量name表示购房者姓名; 4 * buying表示购买者活动; 5 */ 6 package cn.edu.ccut.object3; 7 8 public class Buyer implements Business{ 9 String name; 10 public void buying(double price){ 11 System.out.println("购买一套标价为"+price+"元的住宅"); 12 } 13 }
4、Intermediary.java
1 /** 2 * 中介类,包含一个成员变量,三个方法; 3 * 成员变量buyer代表房屋中介接待的购房对象; 4 * 构造方法初始化,buying表示购房过程,charing计算中介费和契税; 5 */ 6 package cn.edu.ccut.object3; 7 8 public class Intermediary implements Business{ 9 Buyer buyer; 10 Intermediary(Buyer buyer){ 11 this . buyer = buyer; 12 } 13 public void buying(double price){ 14 System.out.println(buyer.name+"购买了一套价格为"+price+"元的住房"); 15 } 16 public void charing(double price){ 17 System.out.println("中介费为"+(price * RATIO)+"元"); 18 System.out.println("契税为"+(price * TAX)+"元"); 19 } 20 }
运行结果:
题目二:
输入5个数,代表学生成绩,计算其平均成绩。当输入值为负数或大于100时,通过自定义异常处理进行提示。
代码:
1、Test.java
1 /** 2 * 主类,包含一个计算平均成绩的类方法,一个主方法; 3 */ 4 package cn.edu.ccut.object1; 5 import java.util.*; 6 7 public class Test { 8 9 /** 10 * @param args 11 */ 12 public static double getaverage() throws MyException{ 13 int score; 14 int sum = 0; 15 Scanner reder = new Scanner(System.in); 16 System.out.println("请输入5个成绩:"); 17 for(int i = 0 ; i < 5 ; i++){ 18 score = reder.nextInt(); 19 if(score < 0 || score > 100){ 20 throw new MyException(score); //抛出自定义异常; 21 } 22 sum += score; 23 } 24 return (double)(sum / 5); 25 } 26 public static void main(String[] args) { 27 // TODO Auto-generated method stub 28 try{ 29 System.out.println("平均成绩是"+getaverage()); 30 } 31 catch(MyException a){ //捕获自定义异常; 32 System.out.print("程序异常,"+a); 33 } 34 } 35 }
2、MyException.java
1 /** 2 * 自定义异常 3 */ 4 package cn.edu.ccut.object1; 5 6 public class MyException extends Exception{ 7 int sc; 8 MyException(int a){ 9 sc = a; 10 } 11 public String toString(){ 12 return "输入的成绩"+sc+"超范围"; //自定义异常描述信息; 13 } 14 }
运行结果: