代碼如下,請(qǐng)教大佬以下幾個(gè)問(wèn)題,幫幫孩子吧快改瘋了
首先,Car是父類(lèi),truck,pickuptruck和coach都沒(méi)啥東西,除了定義沒(méi)寫(xiě)啥東西,主要問(wèn)題出現(xiàn)在入口這,寫(xiě)下來(lái)了但是不知道怎么優(yōu)化。
一。如何判斷用戶(hù)的輸入符合要求,如果不符合要求可以返回重新輸入那種。try catch不太好使,只能檢驗(yàn)出錯(cuò)誤,回不去。然后已經(jīng)用了if else,現(xiàn)在思維陷入循環(huán)出不來(lái)了。我猜應(yīng)該用while,但是真是不知道怎么在里面用。
二。對(duì)于輸出結(jié)果怎么進(jìn)行判斷,因?yàn)槿绻蚁胍鈨奢v相同的車(chē),他會(huì)打印出“可以載人的車(chē)輛有:馬自達(dá) 馬自達(dá)”這樣的。單寫(xiě)都會(huì),好多東西,什么數(shù)組加在一起就迷茫了。
三。如何將程序返回啊,就是代碼運(yùn)行到哪里,退回去。暫時(shí)沒(méi)在腦子里構(gòu)建出這么一個(gè)思想,是不是要理解為,加一個(gè)大loop或者條件。感謝感謝。
以下是代碼:
package com.car;
import java.util.Scanner;
public class Initial extends Car{
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//“利用子類(lèi)創(chuàng)建新類(lèi)型,并合并成數(shù)組”
Car[] carlist = {new Coach(1, "奧迪A4", 500, 4),new Coach(2, "馬自達(dá)6", 400, 4),new PickupTruck(3, "皮卡雪6", 450, 4, 2),new Coach(4, "金龍", 800, 20),new Truck(5, "松花江", 400, 4),new Truck(6, "依維柯", 1000, 20)};
System.out.println("歡迎使用答答租車(chē)系統(tǒng):");
System.out.println("您是否要租車(chē):1.是 0.否");
int ab = input.nextInt();
//how to check the invalid input?
if(ab == 1) {
//String format = "%-8s%-10s%-8s%-6s\n";
System.out.println("序號(hào)" + "\t" + "汽車(chē)名稱(chēng)" + "\t" + "租金" + "\t" + "\t" + "容量");
for(int q=0;q<carlist.length;q++) {
carlist[q].print();
}
System.out.println("請(qǐng)輸入您要租車(chē)的數(shù)量");
int num = input.nextInt();
int sum=0;
int sumh=0;
int sumc=0;
int[] ID = new int[num];
for(int i=0;i<num;i++) {
System.out.println("請(qǐng)輸入您要租的第" + (i+1) + "輛車(chē)的序號(hào)");
int id = input.nextInt();
System.out.println("請(qǐng)選擇要租車(chē)的天數(shù)");
int day = input.nextInt();
sum+=(carlist[id-1].price)*day;
sumh+=carlist[id-1].humanCapacity;
sumc+=carlist[id-1].capacity;
ID[i]=id;
}
System.out.println("您的賬單為");
System.out.println("可載人的車(chē)輛有:");
for(int j=0;j<num;j++) {
if(carlist[ID[j]-1].humanCapacity!=0) {
System.out.println(carlist[ID[j]].name);
}else {
System.out.println("您沒(méi)有選擇載人的車(chē)輛");
}
}
System.out.println("您總共可以載" + sumh + "人");
System.out.println("可載貨的車(chē)輛有:");
for(int k=0;k<num;k++) {
if(carlist[ID[k]-1].capacity!=0) {
System.out.println(carlist[ID[k]].name);
}else {
System.out.println("您沒(méi)有選擇載貨的車(chē)輛");
}
}
System.out.println("您總共可以載" + sumc + "噸");
System.out.println("您的總費(fèi)用為" + sum + "塊錢(qián)");
System.out.println("請(qǐng)根據(jù)指示付款");
System.out.println("謝謝您的使用,歡迎下次光臨");
}else {
System.out.println("感謝您使用租車(chē)系統(tǒng),歡迎下次光臨");
System.exit(0);
}
//how about if the user want to rent other cars?
}
}
2020-01-13
我是應(yīng)為受到你代碼部分啟迪,現(xiàn)在回報(bào)你。你可以使用while(true)這種循環(huán)來(lái)返回上一步,當(dāng)輸入你特定指令時(shí)進(jìn)行下步循環(huán)。即你先判斷用戶(hù)輸入是否對(duì),錯(cuò)就continue,用戶(hù)輸入你所設(shè)定的特定字符串以后返回上一步。
2020-02-19
int rentOrNot=2;
while ((rentOrNot!=0) &&(rentOrNot !=1)) {
rentOrNot=input.nextInt();
if (rentOrNot==0){
System.out.println("感謝使用,再見(jiàn)");
}else if (rentOrNot!=1) {
System.out.println("輸入有誤,請(qǐng)重新輸入");
}else if (rentOrNot==1) {
System.out.println("您可租車(chē)的 類(lèi)型及其價(jià)目表:");
}
}
第一個(gè)問(wèn)題 while怎么用,我是這么寫(xiě)的,供參考
2020-01-10
list裝汽車(chē),選相同的汽車(chē)list里邊加一個(gè),用do-while 里邊多寫(xiě)幾個(gè)if作為每一步的操作,if里的return寫(xiě)while里邊的條件(就是希望跳轉(zhuǎn)到那個(gè)操作步驟)