当前位置: 代码迷 >> J2SE >> Java接口的定义解决方法
  详细解决方案

Java接口的定义解决方法

热度:37   发布时间:2016-04-24 12:25:34.0
Java接口的定义
问题如下:
1. 一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用三种运输工具:卡车,火车,飞机。编写运输接口,声明三个接口常量,表示运输工具,声明一个计算费用的方法,参数是重量和里程
2. 卡车,火车,飞机分别实现作业1的运输接口,计算运费的方法如下:
  卡车:运费=重量*距离*120。当距离大于1000(km)或重量大于60(t)的时候拒载,返回-1
  火车:当距离在900(km)内(包含)时,运费=重量*距离*250,大于900(km)运费=重量*距离*300
  飞机:当距离大于500(km)时,运费=重量*距离*750,否则拒载,返回-1
3. 提示:
  在接口中定义常量和运输方法
  分别定义三种不同的实现类来实现计算运输费用的方法

我现在能做到的是:
Java code
import java.util.Scanner;public class Transport implements method{    public  void truck()    {        Scanner scan = new Scanner(System.in);                System.out.println("请输入距离:");        int distance = scan.nextInt();        System.out.println("请输入重量:");        int height = scan.nextInt();                int count =height*distance*120;                if(distance>1000)        {            System.out.println("太远了,拒载");        }        else if(height>60)        {            System.out.println("太重了,拒载");        }        else        {            System.out.println("运费是:"+count);        }    }    public void train()    {        Scanner scan = new Scanner(System.in);                System.out.println("请输入距离:");        int distance = scan.nextInt();        System.out.println("请输入重量:");        int height = scan.nextInt();                if(distance <=900)        {            int count = distance*height*250;            System.out.println("运费是:"+count);        }        else        {            int count = distance*height*300;            System.out.println("运费是:"+count);        }        }    public  void air()    {        Scanner scan = new Scanner(System.in);            System.out.println("请输入距离:");        int distance = scan.nextInt();        System.out.println("请输入重量:");        int height = scan.nextInt();        if(distance<=500)        {            int count = distance*height*750;            System.out.println("运费是"+count);        }        else        {            System.out.println("太重了,拒载");        }    }}

接口:
Java code
public interface method {public void truck();public void train();public void air();}


我想做的是,从控制台输入的文本来确定和选择运输方式,如何解决?

------解决方案--------------------
Java code
Scanner san = new Scanner(System.in);Integer transWay = san.nextInt(); //1.by truck、2.by train、3.by airTransport tr = Transport();if(transWay == 1){  tr.truck();}else if(transWay == 2){   tr.train();}else if(transWay == 3){  tr.air();}
------解决方案--------------------
for example
Java code
interface 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();}    }}
  相关解决方案