问题如下:
1. 一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用三种运输工具:卡车,火车,飞机。编写运输接口,声明三个接口常量,表示运输工具,声明一个计算费用的方法,参数是重量和里程
2. 卡车,火车,飞机分别实现作业1的运输接口,计算运费的方法如下:
卡车:运费=重量*距离*120。当距离大于1000(km)或重量大于60(t)的时候拒载,返回-1
火车:当距离在900(km)内(包含)时,运费=重量*距离*250,大于900(km)运费=重量*距离*300
飞机:当距离大于500(km)时,运费=重量*距离*750,否则拒载,返回-1
3. 提示:
在接口中定义常量和运输方法
分别定义三种不同的实现类来实现计算运输费用的方法我现在能做到的是: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("太重了,拒载");
}
}
}接口:public interface method
{
public void truck();public void train();public void air();
}
我想做的是,从控制台输入的文本来确定和选择运输方式,如何解决?
1. 一个运输公司从网上得到订单,订单上标有货物重量和运输里程,该公司可以使用三种运输工具:卡车,火车,飞机。编写运输接口,声明三个接口常量,表示运输工具,声明一个计算费用的方法,参数是重量和里程
2. 卡车,火车,飞机分别实现作业1的运输接口,计算运费的方法如下:
卡车:运费=重量*距离*120。当距离大于1000(km)或重量大于60(t)的时候拒载,返回-1
火车:当距离在900(km)内(包含)时,运费=重量*距离*250,大于900(km)运费=重量*距离*300
飞机:当距离大于500(km)时,运费=重量*距离*750,否则拒载,返回-1
3. 提示:
在接口中定义常量和运输方法
分别定义三种不同的实现类来实现计算运输费用的方法我现在能做到的是: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("太重了,拒载");
}
}
}接口:public interface method
{
public void truck();public void train();public void air();
}
我想做的是,从控制台输入的文本来确定和选择运输方式,如何解决?
解决方案 »
- 求助!密码流的java程序。
- 求高手给解答一下 java链接mysql数据库异常
- 多个对象调用一个静态函数 会产生什么结果[java基础]
- java 聊天记录
- JAVA Timer问题(急)
- java调用oracle存储过程的问题
- 如何画二叉树?
- 请教为何不能在下面类中使用addTreeSelectionListener(this),谢谢!
- 高手指点:异步输入输出流的实现问题(关于socket,selector....)
- 请教高手一个小问题:怎样从一个表中"Select 街区 from weiming.街区表"得到的街区加到一个ComboBox中呢?麻烦写点代码
- 在JPANEL上动态的改变背景,并且能有PPT一样的特效
- 关于把内部类写在外部类的外部的一个问题 相当于两个类之间的调用问题 请高手指教
Scanner san = new Scanner(System.in);
Integer transWay = san.nextInt(); //1.by truck、2.by train、3.by air
Transport tr = Transport();
if(transWay == 1){
tr.truck();
}else if(transWay == 2){
tr.train();
}else if(transWay == 3){
tr.air();
}随手写的代码,只是个思路。lz需要根据具体的业务场景设计。
我想知道第三部,怎么解决。
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();}
}
}
public double getFee(double weight, double distance);
}public class Truck implements Transport {
public double getFee(double weight, double distance){
double fee = -1;
// 实现业务逻辑计算费用
return;
}
}// 其他工具类似
// 程序入口
// 在程序入口中写读取用户输入的操作,不要在业务类中写这些。
public class Test {
public static void main(String[] args) {
// 读取用户输入重量及距离 // 读取用户输入的运输方式,根据运输方式获取具体的实现类
// 如 输入truck时, Transport transport = new Truck();
// double fee = transport.getFee(weight, distance); }
}
public class Test { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
Transport tp=new Transport();
System.out.print("请选择相应的运输方式,1:卡车,2火车,3:飞机,0:退出");
int inputnums=scan.nextInt();
while(inputnums<1||inputnums>3)
{
System.out.print("你输入的数字有误!请重新输入\r\n");
inputnums=scan.nextInt();
}
switch(inputnums)
{
case 1:tp.truck();break;
case 2:tp.train();break;
case 3:tp.air();
}
}}