package design;
public abstract class CashSuper {
public abstract double AcceptCash(double money);
}
package design;
public class CashNormal extends CashSuper {
@Override
public double AcceptCash(double money) {
// TODO Auto-generated method stub
return money;
}
}
package design;
public class CashReback extends CashSuper {
private Double reback=0.0;
private Double money=0.0;
public CashReback(String moneyOne,String rebackOne)
{
money=Double.parseDouble(moneyOne);
reback=Double.parseDouble(rebackOne);
}
@Override
public double AcceptCash(double moneyOne) {
// TODO Auto-generated method stub
return moneyOne-Math.floor(moneyOne/money)*reback;
}
}
package design;
public class CashRebate extends CashSuper {
private double discount=1;
public CashRebate(String discountOne)
{
discount=Double.parseDouble(discountOne);
}
@Override
public double AcceptCash(double money) {
// TODO Auto-generated method stub
return money*discount;
}
}
package design;
public class CashContext {
private CashSuper cash;
public CashContext(String type) {
switch (type) {
case "普通用户":
cash = new CashNormal();
break;
case "打六折":
cash = new CashRebate("0.6");
break;
case "满300减100":
cash = new CashReback("300", "100");
break;
default:
System.out.println("请重新输入");
}
}
public Double AcceptCash(Double money) {
return cash.AcceptCash(money);
}
}
package design;
import java.util.Scanner;
public class MainThree {
public static void main(String[] args) {
// TODO Auto-generated method stub
String type;
Double price = 0.0;
Double sum = 0.0;
Scanner cin = new Scanner(System.in);
while (cin.hasNext()) {
type = cin.next();
price = cin.nextDouble();
CashContext cash = new CashContext(type);
sum += cash.AcceptCash(price);
System.out.println(sum);
}
}
}