java难题,请求各位高手帮助我解答一下,大家有难题互帮互助?
一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用3种运输工具:卡车、火车、飞机。根据以下要求设计接口,并定义接口的实现类,在测试类中验证多态性,具...
一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用3种运输工具:卡车、火车、飞机。根据以下要求设计接口,并定义接口的实现类,在测试类中验证多态性,具体要求如下:
(1)编写运输接口Traffic,声明一个计算运费的方法,参数是重量和里程;
(2)卡车、火车、飞机分别实现运输接口,计算运费的方法如下:
a. 卡车Truck:运费=重量*距离*120,当距离大于1000km或重量大于60t时候拒载,提示“超重或者距离太远不能接单”;
b. 火车:当距离在900km内时,运费=重量*距离*250,大于900km,运费=重量*距离*300.
c. 飞机:当距离大于500km时,运费=重量*距离*750,否则拒载,输出信息。
(3)定义一个ZuChe类,定义2个属性,分别描述重量和里程;定义一个方法useTraffic(Traffic t,double zhong,double licheng),在该方法中调用计算运费的方法;
(4)编写测试类,在测试类中创建三个实现类对象,从控制台输入重量和里程,创建一个ZuChe对象,分别用三个实现类对象作参数,调用userTraffic方法。 展开
(1)编写运输接口Traffic,声明一个计算运费的方法,参数是重量和里程;
(2)卡车、火车、飞机分别实现运输接口,计算运费的方法如下:
a. 卡车Truck:运费=重量*距离*120,当距离大于1000km或重量大于60t时候拒载,提示“超重或者距离太远不能接单”;
b. 火车:当距离在900km内时,运费=重量*距离*250,大于900km,运费=重量*距离*300.
c. 飞机:当距离大于500km时,运费=重量*距离*750,否则拒载,输出信息。
(3)定义一个ZuChe类,定义2个属性,分别描述重量和里程;定义一个方法useTraffic(Traffic t,double zhong,double licheng),在该方法中调用计算运费的方法;
(4)编写测试类,在测试类中创建三个实现类对象,从控制台输入重量和里程,创建一个ZuChe对象,分别用三个实现类对象作参数,调用userTraffic方法。 展开
2个回答
展开全部
import java.util.Scanner;
interface Traffic{
double calc(double weight,double distance);//计算运费
}
class Trunk implements Traffic{
@Override
public double calc(double weight,double distance) {
return (distance<=1000&&weight<=60)?(weight*distance*120):(-1);
}
}
class Train implements Traffic{
@Override
public double calc(double weight, double distance) {
return (distance<=900)?(weight*distance*250):(distance*weight*300);
}
}
class Plane implements Traffic{
@Override
public double calc(double weight, double distance) {
return (distance>500)?(weight*distance*750):(-1);
}
}
class ZuChe{
private double distance;//距离
private double weight;//重量
public String useTraffic(Traffic t){
double result = t.calc(weight, distance);
return (result!=-1)?(""+result):(t.getClass().getName().equals(Trunk.class.getName())?"超重或者距离太远不能接单":"拒载");
}
public ZuChe setDistance(double distance) {
this.distance = distance;
return this;
}
public ZuChe setWeight(double weight) {
this.weight = weight;
return this;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double weight = sc.nextDouble();
double distance = sc.nextDouble();
ZuChe zuche = new ZuChe().setDistance(distance).setWeight(weight);
System.out.println("卡车的运费是:"+zuche.useTraffic(new Trunk()));
System.out.println("火车的运费是:"+zuche.useTraffic(new Train()));
System.out.println("飞机的运费是:"+zuche.useTraffic(new Plane()));
}
}
interface Traffic{
double calc(double weight,double distance);//计算运费
}
class Trunk implements Traffic{
@Override
public double calc(double weight,double distance) {
return (distance<=1000&&weight<=60)?(weight*distance*120):(-1);
}
}
class Train implements Traffic{
@Override
public double calc(double weight, double distance) {
return (distance<=900)?(weight*distance*250):(distance*weight*300);
}
}
class Plane implements Traffic{
@Override
public double calc(double weight, double distance) {
return (distance>500)?(weight*distance*750):(-1);
}
}
class ZuChe{
private double distance;//距离
private double weight;//重量
public String useTraffic(Traffic t){
double result = t.calc(weight, distance);
return (result!=-1)?(""+result):(t.getClass().getName().equals(Trunk.class.getName())?"超重或者距离太远不能接单":"拒载");
}
public ZuChe setDistance(double distance) {
this.distance = distance;
return this;
}
public ZuChe setWeight(double weight) {
this.weight = weight;
return this;
}
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double weight = sc.nextDouble();
double distance = sc.nextDouble();
ZuChe zuche = new ZuChe().setDistance(distance).setWeight(weight);
System.out.println("卡车的运费是:"+zuche.useTraffic(new Trunk()));
System.out.println("火车的运费是:"+zuche.useTraffic(new Train()));
System.out.println("飞机的运费是:"+zuche.useTraffic(new Plane()));
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询