Java codeinterface Transport { //定义接口
int TRUCH = 0;
int TRAIN = 1;
int AIRPLANE = 2;
double cacl(double weight, double distance);
}
class Truck implements Transport { //实现接口
public double cacl(double weight, double distance) {
if (weight > 60 || distance > 1000) return -1;
return weight * distance * 120;
}
}
class Train implements Transport {
public double cacl(double weight, double distance) {
if (distance > 900) return weight * distance * 300;
return weight * distance * 250;
}
}
class Airplane implements Transport {
public double cacl(double weight, double distance) {
if (distance < 500) return -1;
return weight * distance * 750;
}
}
public class Test { //使用接口
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("please slelect transport[1:truck/2:train/3:airplane] or input [quit] to exit.");
String method = sc.nextLine();
if ("exit".equals(method)) {break;}
if (!method.matches("[1-3]")) {
System.out.println("error input, try again.");
continue();
}
System.out.println("please input weight");
String weight = sc.nextLine();
if (!weight.matches("\\d+([.]\\d+)?")) {
System.out.println("error input, try again.");
continue();
}
System.out.println("please input distance");
String distance = sc.nextLine();
if (!weight.matches("\\d+([.]\\d+)?")) {
System.out.println("error input, try again.");
continue();
}
Transport tp = getTransport(Integer.valueOf(method));
double money = tp.cacl(Double.valueOf(weight), double.valueOf(distance));
System.out.println("money=%.2f", money);
}
}
public static Transport getTransport(int transport) {
if (transport == Transport.TRUCK) {return new Truck();}
else if (transport == Transport.TRAIN) {return new Train();}
else {return new Airplane();}
}
}