题目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);//输出平均成绩
}
}
}
运行结果:
异常处理:
正常运行: