煎蛋的少年
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入门第二季
531292 学习 · 6327 问题
相似问题