嗒嗒打車的問題,希望大神能夠幫我解決一下問題。
具體的問題都在 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("希望您下次需要租車的時候聯系我們"); } }
2016-07-20
? ?//判斷用戶是否需要租車。此處如果輸入其他字符就會報錯,如何解決呢?
你可以捕捉異常 ? ??try{}catch(Exception e){}finally{執行業務邏輯}
對于這個問題,我一開始也以為要用鼠標點,不過我試著直接輸入數字,數字會自動出現在最底部
------------------------------------------------------------------------------------------------------------------
對于你這一段的問題,我看得不是很懂,不知道你的意思是不是,比如第一輛車的編號輸入了0,回車之后還是從第二輛車開始 ?? ?如果是的話,我給你解決了,因為你令i=0之后,就進行i++,滿足i<b,再次進行循環,j=i+1就又等于2,所以一直都是第二輛車,這是運行的邏輯問題,你自己慢慢思考吧。
------------------------------------------------------------------------------------------------------------------? ? ? ?
2016-10-15
//判斷用戶是否需要租車。此處如果輸入其他字符就會報錯,如何解決呢?
if(a == 1){
????// 執行你的代碼
}else{
????System.out.println("退出系統!");
????System.exit(0);
}
2016-09-11
?if(c?==?0){???????????????????????
????????????????????i?=?0;
????????????????????System.out.println(i);? ?
?}
要將此處的?i?=?0改為i--
2016-07-18
?private?static?Scanner?scanner;//讀取輸入數據
scanner是靜態變量
可你接收
Number[i]?=?scanner.nextInt();
那數組有應該是靜態