第10次作业
题目1:
编写一个应用程序,模拟中介和购房者完成房屋购买过程。
源文件:Business.java
/** * 1.创建接口Business * 2.声明抽象方法buying * 3.实现该接口的类都可以使用该方法 * */ package cn.edu.ccut.buyhouse; public interface Business {//定义接口Business double RATIO = 0.022;//代表房屋中介收取的中介费用占房屋标价的比例,初值为0.022 double TAX = 0.03;//代表购房需要交纳的契税费用占房屋标价的比例,初值为0.03 void buying (double price);//price表示房屋总价 }
源文件:Buyer.java
/** * 1.主类Buyer实现Business接口, * 2.重写接口方法buying() * 3.buying()方法重写了接口的方法,显示购买者输出购买一套标价为price元的住宅 * */ package cn.edu.ccut.buyhouse; public class Buyer implements Business{//购房者类Buyer使用接口Business String name; public void buying (double price) {//显示输出购买一套标价为price元的住宅 System.out.println(name+"购买一套标价为"+price+"元的住宅"); } }
源文件:Intermediary.java
/** * 1.主类Intermediary实现Business接口,成员变量Buyer型 buyer * 2.重写接口方法buying() * 3.buying()方法重写了接口的方法,显示购买者输出购买一套标价为price元的住宅 * */ package cn.edu.ccut.buyhouse; public class Intermediary implements Business{ Buyer buyer; Intermediary(Buyer buyer){ this.buyer = buyer; } public void buying (double price) {//购房者buyer购买一套标价为price元的住宅,之后计算需要支付的中介费和交纳的契税 System.out.println("需要支付的中介费为:"+price*RATIO+",需要交纳的契税为:"+price*TAX); } public void charing(double price) {//表示计算购买标价为price元的住宅时,房屋中介需要收取的中介费和需要交纳的契税 System.out.println("房屋中介需要收取的中介费为:"+price*RATIO+",需要交纳的契税为:"+price*TAX); } }
源文件:Test.java
/** * 1.主类Test,主方法main * 2.变量price用来接收用户输入的价格, 创建购房者类Buyer对象,中介类Intermediary对象 * 3.给buyer.name传参,给对象intermediary初始化时参数buyer, * 分别给对象intermediary下方法buying和charing传参price * */ package cn.edu.ccut.buyhouse; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); Buyer buyer = new Buyer();//创建Buyer对象 buyer.name="Lisa";//给name赋值 double price=in.nextDouble(); buyer.buying(price);//给buying方法传参 Intermediary intermediary = new Intermediary( buyer);//创建对象并初始化参数 intermediary.buying(price);//传参 intermediary.charing(price);//传参 } }
运行结果:
题目2:
输入5个数,代表学生成绩,计算其平均成绩。当输入值为负数或大于100时,通过自定义异常处理进行提示。
源文件:MyException.java
/** * 1.主类自定义异常类MyException继承Exception类,构造方法MyException() * 2.私有成员变量exceptnumber,局部变量a 通过a赋值给exceptnumber。 * 3.进行父类方法的重写,并返回异常处理方式 * */ package cn.edu.ccut.yclx; public class MyException extends Exception{//自定义异常类MyException private double exceptnumber; MyException(double a){ exceptnumber=a; } public String toString() {//方法重写 return "输入的数值有包含大于100或者为负数的值(不合法数值为:"+exceptnumber+")请重新执行!";//异常处理 } }
源文件:Test.java
/** * 1.主类Test,主方法main * 2.Test类中方法makeExcept,异常声明传给自定义异常类MyException * 3.主方法里,变量score,sum,sign标记。for循环让用户输入分数,用try尝试是否异常 * if判断标记,输入的数都合法才计算平均分 * */ package cn.edu.ccut.yclx; import java.util.Scanner; public class Test { static void makeExcept(double a)throws MyException{//异常声明 if(a>100||a<0) { throw new MyException(a);//抛出异常对象 } } public static void main(String[] args) { Scanner in = new Scanner(System.in); double score ,sum=0;//分数,分数和 int sign =0; for(int i=0;i<5;i++) {//循环五次输入成绩 score = in.nextDouble(); try { makeExcept(score);//调用函数,传参score sum=sum+score;//分数总和,不异常则累加分数 } catch(MyException e){ sign++;//若异常++ System.out.println("异常!"+e);//异常处理 } } if(sign==0) {//判断标记是否++了。合法才能计算平均成绩 double average =sum/5;//计算平均成绩 System.out.println("平均成绩为:"+average);//输出平均成绩 } } }