抽象父类
public abstract class PropertyFee {
double unit_price;// unit_price为单价
abstract double cost(double usage); // 计费方法:usage为用量,
}
水费子类
public class WaterCharge extends PropertyFee {
//水费
double cost(double usage) {
//usage为用水量:立方米,unit_price为水价:元/立方米
if(usage>=0 && usage <=220) {
unit_price=3.45;
}
else if(usage>220 && usage <=360) {
unit_price=4.83;
}
else if(usage>=361) {
unit_price=5.83;
}
return usage*unit_price;
}
}
电费子类
public class ElectricityFees extends PropertyFee {
//电费
double cost(double usage) {
//usage为用电量:度,unit_price为电价:元/度
if(usage>=0 && usage <=1200) {
unit_price=0.52;
}
else if(usage>1200 && usage <2400) {
unit_price=0.57;
}
else if(usage>=2400) {
unit_price=0.82;
}
return usage*unit_price;
}
}
气费子类
public class GasFee extends PropertyFee {
// 气费
double cost(double usage) {
//usage为用气量:立方米,unit_price为气体单价:元/立方米
if (usage >= 0 && usage <= 500) {
unit_price = 2.26;
} else if (usage >= 501 && usage <= 660) {
unit_price = 2.60;
} else if (usage >= 661) {
unit_price = 3.12;
}
return usage * unit_price;
}
}
用户主类
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("输入查询内容的代号:1.水费,2.气费,3.电费");
while (input.hasNext()) {
int code_name = input.nextInt();
if (code_name == 1) {
System.out.println("输入用水量(立方米)");
double water_use = input.nextDouble();
WaterCharge user = new WaterCharge();
System.out.println("需要缴纳的水费:" + user.cost(water_use) + "元");
} else if (code_name == 2) {
System.out.println("输入用气量(立方米)");
double gas_use = input.nextDouble();
GasFee user = new GasFee();
System.out.println("需要缴纳的气费:" + user.cost(gas_use) + "元");
} else if (code_name == 3) {
System.out.println("输入用电量(度)");
double electric_use = input.nextDouble();
ElectricityFees user = new ElectricityFees();
System.out.println("需要缴纳的电费:" + user.cost(electric_use) + "元");
}
else {
System.out.println("输入代号有误");
break;
}
}
}
}