嗒嗒打车的问题,希望大神能够帮我解决一下问题。

来源:12-2 项目问题解析 1

煎蛋的少年

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("希望您下次需要租车的时候联系我们");

	}
}


写回答 关注

4回答

  • wm丶丶
    2016-07-20 15:36:25
    已采纳

       //判断用户是否需要租车。此处如果输入其他字符就会报错,如何解决呢?

    你可以捕捉异常     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  其他没有改动
                    }


    煎蛋的少年

    好的,确实是逻辑问题,谢谢!

    2016-07-25 17:51:50

    共 1 条回复 >

  • 慕斯7649725
    2016-10-15 20:30:01

    //判断用户是否需要租车。此处如果输入其他字符就会报错,如何解决呢?

    if(a == 1){

        // 执行你的代码

    }else{

        System.out.println("退出系统!");

        System.exit(0);

    }

  • 由来笑我看不穿3822179
    2016-09-11 16:15:22

     if(c == 0){                       

                        i = 0;

                        System.out.println(i);   

     }

    要将此处的 i = 0改为i--


  • 清心生活的实践者
    2016-07-18 15:06:38

     private static Scanner scanner;//读取输入数据

    scanner是静态变量

    可你接收

    Number[i] = scanner.nextInt();

    那数组有应该是静态


    煎蛋的少年

    我按照你的写了一下,系统报错了,不能在数组那里加static. private static Scanner scanner这一个引用也是系统将我的private Scanner scanner 修改后生成的。。 我不知道为什么-0-

    2016-07-18 17:56:43

    共 1 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530560 学习 · 6091 问题

查看课程

相似问题