题目一:
一.编写一个应用程序,模拟中介和购房者完成房屋购买过程。
共有一个接口和三个类:
- Business—— 业务接口
- Buyer —— 购房者类
- Intermediary—— 中介类
- Test —— 主类
1.业务接口
业务接口包括:
(1)两个数据域(成员变量)
RATIO: double型,代表房屋中介收取的中介费用占房屋标价的比例,初值为0.022
TAX:double型,代表购房需要交纳的契税费用占房屋标价的比例,初值为0.03
(2)一个方法
void buying (double price):price表示房屋总价
2.购房者类
购房者类Buyer是业务接口Business的非抽象使用类,包括:
(1)一个成员变量
name:String型,表示购房者姓名
(2)一个方法:
public void buying (double price):显示输出购买一套标价为price元的住宅
3.中介类
中介类Intermediary是业务接口Business的非抽象使用类,包括:
- 一个成员变量
buyer:Buyer型,代表房屋中介接待的购房对象
- 三个方法
Intermediary(Buyer buyer):构造方法
public void buying (double price):购房者buyer购买一套标价为price元的住宅,之后计算需要支付的中介费和交纳的契税
public void charing(double price):表示计算购买标价为price元的住宅时,房屋中介需要收取的中介费和需要交纳的契税(中介费计算公式:房屋标价* RATIO,契税计算公 式:房屋标价*TAX)
4.Test类
在Test类中定义购房对象——姓名Lisa,从控制台输入她计划买的房屋标价,如650000元。请你通过上面定义的接口和类,实现她通过中介买房的过程,显示需交纳的中介费和契税。
二.源代码
1.Business.java
1 /*业务接口Business包括两个 成员变量RATIO、TAX,分别表示中介费用的比例和 2 * 契税的比率。还定义了一个buying方法,参数是price,表示房价。 3 * */ 4 package sale; 5 6 public interface Business { 7 double RATIO=0.022; 8 double TAX=0.03; 9 void buying(double price); 10 11 }
2.Buyer.java
1 /*购房者类Buyer是业务接口的非抽象使用类,包括一个成员变量name, 2 * 表示购房者的名字,重写了buying方法,用于输出某人购买房屋的总花费。 3 * */ 4 package sale; 5 6 public class Buyer implements Business { 7 String name; 8 public void buying(double price) 9 { 10 System.out.println(name+"购买了一套标价为"+price+"元的住宅"); 11 } 12 13 }
3.Intermediary.java
1 /*中介类是Intermediary是业务接口的非抽象使用类,包括一个成员变量buyer, 2 * 和三个方法,一个构造方法Intermediary,重写了buying方法,以及一个计算中介费 3 * 和所交契税的方法 4 */ 5 package sale; 6 7 public class Intermediary implements Business { 8 Buyer buyer; 9 double intermediary; 10 double tax; 11 public Intermediary(Buyer buyer){ 12 this.buyer=buyer; 13 } 14 public void buying(double price){ 15 charging(price); 16 } 17 public void charging(double price){ 18 intermediary=price*RATIO; 19 tax=price*TAX; 20 System.out.println("中介公司收取的中介费为:"+intermediary); 21 System.out.println("需要交的契税为:"+tax); 22 } 23 24 }
4.Test2.java
/*定义了住房对象Lisa,通过控制台输入房价, * 创建中介类的对象inter,通过接口调用实现相关计算 * */ package sale; import java.util.Scanner; public class Test2 { public static void main(String[] args) { Buyer buyer=new Buyer(); buyer.name="Lisa"; System.out.println("请输入要购买的房屋总价:"); Scanner reader=new Scanner(System.in); double price=reader.nextDouble(); buyer.buying(price); Intermediary inter=new Intermediary(buyer); inter.charging(price); } }
三.运行截图
题目二:
一.输入5个数,代表学生成绩,计算其平均成绩。当输入值为负数或大于100时,通过自定义异常处理进行提示。
二.源代码
Test1.java
1 /*Test1主要是通过对学生成绩输入可能产生的异常做相应的提示, 2 * 首先自定义了一个新的异常子类MyException,并继承Exception父类, 3 * 子类MyException中通过String toString描述了异常的详细信息, 4 * 在makeMyExcept中抛出了异常,在主方法中通过Scanner创建对象从控制台输入了 5 * 五科成绩,通过try-catch语句做异常处理。 6 * */ 7 package Computescore; 8 import java.util.*; 9 10 class MyException extends Exception{ //自定义异常类 11 private double number; 12 public MyException(double score){ 13 number=score; 14 } 15 public String toString(){ //自定义异常信息 16 return "输入成绩异常"; 17 } 18 } 19 public class Test1 { 20 static void makeMyExcept(double score)throws MyException{ //声明 21 if(score<0||score>100){ 22 throw new MyException(score); //抛出自定义的异常 23 } 24 } 25 public static void main(String[] args) { 26 double sum=0; 27 double average; 28 Scanner reader=new Scanner(System.in); 29 System.out.println("请分别输入五科成绩:"); 30 try{ //异常处理 31 for(int i=0;i<5;i++){ 32 double score=reader.nextDouble(); 33 makeMyExcept(score); 34 sum=sum+score; 35 } 36 average=sum/5; 37 System.out.println("平均成绩为:"+average); 38 } 39 catch(MyException a){ //捕获自定义异常 40 System.out.println("捕获异常--输入成绩有误"); 41 } 42 } 43 44 }
三.运行截图