首页 > 技术文章 > 第10次作业

zyg777 2019-11-13 19:58 原文

题目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);//输出平均成绩
        }

    }

}

运行结果:

异常处理:

正常运行:

推荐阅读