煎蛋的少年
2016-07-18 10:55
具体的问题都在 initial 代码的注释里面了。
package dadaCall; public abstract class AmotoCar { public double orderSnowPeiceSum; public abstract void motorMassege(); public abstract double orderMassege(double orderCount); }
package dadaCall; public class SnowCar extends AmotoCar { int passager = 0; //乘客数量 int loadWeight = 5; //载货量 double orderPeice = 500.0;//价格 double orderSnowPeiceSum;//本类车型订单总花费 double orderCount;//本类车型订单数量 @Override public void motorMassege() { //输出本类车型信息 // TODO Auto-generated method stub System.out.printf("%s\t%s\t%s\t%s\t%s\n","1","轻型雪弗兰","0人","5T","500Y/Day"); } @Override public double orderMassege(double orderCount) { //计算本类车型订单花费 // TODO Auto-generated method stub orderSnowPeiceSum = orderPeice * orderCount ; return orderSnowPeiceSum; } }
package dadaCall; public class PickUp extends AmotoCar { int passager = 5; int loadWeight = 2; double orderPeice = 600.0; double orderPickUpPeiceSum; int orderCount; @Override public void motorMassege() { // TODO Auto-generated method stub System.out.printf("%s\t%s\t%s\t%s\t%s\n","2","皮卡客货","5人","2T","600Y/Day"); } @Override public double orderMassege(double orderCount) { // TODO Auto-generated method stub orderPickUpPeiceSum = orderPeice * orderCount ; return orderPickUpPeiceSum; } }
package dadaCall; import java.util.Scanner; public class initial { private static Scanner scanner;//读取输入数据 public static void main(String[] args) { scanner = new Scanner(System.in); System.out.printf("%s\n%s\n","你是否要选择租车?","是请输入1 ,否请输入其他数字。"); //判断用户是否需要租车。此处如果输入其他字符就会报错,如何解决呢? int a = scanner.nextInt(); SnowCar snowCar =new SnowCar(); PickUp pickUp =new PickUp(); if(a == 1){ //用户选择租车系统 System.out.printf("%s\t%s\t%s\t%s\t%s\n","编号","车型","载客数","载货量","价格"); snowCar.motorMassege(); pickUp.motorMassege(); System.out.println("请输入你想要租车数量:"); //此次(不使用鼠标点击)进行输入时,数字会卡在“编号”处,程序无法继续进行,为什么呢? int b = scanner.nextInt(); int[] Number = new int [b];//建立租车编号数组 int i = 0; for (;i<b;){ //for循环使用用户输入的租车编号对数组进行赋值 int j = i+1; System.out.println("请输入第"+j+"辆车的编号"); Number[i] = scanner.nextInt(); System.out.println("你选择的车辆编号是:"+Number[i]); /*System.out.println("如需要重新选择本俩车编号,请输入数字 0 !否者请输入其他任意整数。"); int c = scanner.nextInt(); //对用户选择车辆进行确认 //请问,为什么这里输入0后,是从第二次输入0才开始进行重置循环呢?如何解决? if(c == 0){ i = 0; System.out.println(i); }*/ i++; } System.out.println("你选择租车的清单如下:"); for(int number:Number){ switch (number){ case 1 : //遍历租车编号数组,判断租车的车型,并计数各种车型的租用数量 snowCar.motorMassege(); snowCar.orderCount++; break; case 2 : pickUp.motorMassege(); pickUp.orderCount++; break; } } double passagerSum = (snowCar.orderCount * snowCar.passager+pickUp.orderCount*pickUp.passager); System.out.println("您租车的可载人数为:"+passagerSum); double loadWeightSum = snowCar.orderCount*snowCar.loadWeight+pickUp.orderCount*pickUp.loadWeight; System.out.println("您租车的可载货量为:"+loadWeightSum); double costSum = snowCar.orderMassege(snowCar.orderCount)+ pickUp.orderMassege(pickUp.orderCount); System.out.println("您租车的费用为:"+costSum); } else System.out.println("希望您下次需要租车的时候联系我们"); } }
//判断用户是否需要租车。此处如果输入其他字符就会报错,如何解决呢?
你可以捕捉异常 try{}catch(Exception e){}finally{执行业务逻辑}
System.out.println("请输入你想要租车数量:"); //此次(不使用鼠标点击)进行输入时,数字会卡在“编号”处,程序无法继续进行,为什么呢?
对于这个问题,我一开始也以为要用鼠标点,不过我试着直接输入数字,数字会自动出现在最底部
------------------------------------------------------------------------------------------------------------------
对于你这一段的问题,我看得不是很懂,不知道你的意思是不是,比如第一辆车的编号输入了0,回车之后还是从第二辆车开始 ? 如果是的话,我给你解决了,因为你令i=0之后,就进行i++,满足i<b,再次进行循环,j=i+1就又等于2,所以一直都是第二辆车,这是运行的逻辑问题,你自己慢慢思考吧。
------------------------------------------------------------------------------------------------------------------
int c = scanner.nextInt(); //对用户选择车辆进行确认 //请问,为什么这里输入0后,是从第二次输入0才开始进行重置循环呢?如何解决? if(c == 0){ i = 0; System.out.println(i); } else i++; // 此处加上else 其他没有改动 }
//判断用户是否需要租车。此处如果输入其他字符就会报错,如何解决呢?
if(a == 1){
// 执行你的代码
}else{
System.out.println("退出系统!");
System.exit(0);
}
if(c == 0){
i = 0;
System.out.println(i);
}
要将此处的 i = 0改为i--
private static Scanner scanner;//读取输入数据
scanner是静态变量
可你接收
Number[i] = scanner.nextInt();
那数组有应该是静态
Java入门第二季 升级版
530656 学习 · 6091 问题
相似问题