亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

嗒嗒打車的問題,希望大神能夠幫我解決一下問題。

具體的問題都在 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 回答

? ?//判斷用戶是否需要租車。此處如果輸入其他字符就會報錯,如何解決呢?

你可以捕捉異常 ? ??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??其他沒有改動
????????????????}


0 回復 有任何疑惑可以回復我~
#1

煎蛋的少年 提問者

好的,確實是邏輯問題,謝謝!
2016-07-25 回復 有任何疑惑可以回復我~

//判斷用戶是否需要租車。此處如果輸入其他字符就會報錯,如何解決呢?

if(a == 1){

????// 執行你的代碼

}else{

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

????System.exit(0);

}

0 回復 有任何疑惑可以回復我~

?if(c?==?0){???????????????????????

????????????????????i?=?0;

????????????????????System.out.println(i);? ?

?}

要將此處的?i?=?0改為i--


0 回復 有任何疑惑可以回復我~

?private?static?Scanner?scanner;//讀取輸入數據

scanner是靜態變量

可你接收

Number[i]?=?scanner.nextInt();

那數組有應該是靜態


0 回復 有任何疑惑可以回復我~
#1

煎蛋的少年 提問者

我按照你的寫了一下,系統報錯了,不能在數組那里加static. private static Scanner scanner這一個引用也是系統將我的private Scanner scanner 修改后生成的。。 我不知道為什么-0-
2016-07-18 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

嗒嗒打車的問題,希望大神能夠幫我解決一下問題。

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號