代碼如下,請教大佬以下幾個問題,幫幫孩子吧快改瘋了
首先,Car是父類,truck,pickuptruck和coach都沒啥東西,除了定義沒寫啥東西,主要問題出現在入口這,寫下來了但是不知道怎么優化。
一。如何判斷用戶的輸入符合要求,如果不符合要求可以返回重新輸入那種。try catch不太好使,只能檢驗出錯誤,回不去。然后已經用了if else,現在思維陷入循環出不來了。我猜應該用while,但是真是不知道怎么在里面用。
二。對于輸出結果怎么進行判斷,因為如果我想要租兩輛相同的車,他會打印出“可以載人的車輛有:馬自達 馬自達”這樣的。單寫都會,好多東西,什么數組加在一起就迷茫了。
三。如何將程序返回啊,就是代碼運行到哪里,退回去。暫時沒在腦子里構建出這么一個思想,是不是要理解為,加一個大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);
//“利用子類創建新類型,并合并成數組”
Car[] carlist = {new Coach(1, "奧迪A4", 500, 4),new Coach(2, "馬自達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("歡迎使用答答租車系統:");
System.out.println("您是否要租車: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("序號" + "\t" + "汽車名稱" + "\t" + "租金" + "\t" + "\t" + "容量");
for(int q=0;q<carlist.length;q++) {
carlist[q].print();
}
System.out.println("請輸入您要租車的數量");
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("請輸入您要租的第" + (i+1) + "輛車的序號");
int id = input.nextInt();
System.out.println("請選擇要租車的天數");
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("可載人的車輛有:");
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("您沒有選擇載人的車輛");
}
}
System.out.println("您總共可以載" + sumh + "人");
System.out.println("可載貨的車輛有:");
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("您沒有選擇載貨的車輛");
}
}
System.out.println("您總共可以載" + sumc + "噸");
System.out.println("您的總費用為" + sum + "塊錢");
System.out.println("請根據指示付款");
System.out.println("謝謝您的使用,歡迎下次光臨");
}else {
System.out.println("感謝您使用租車系統,歡迎下次光臨");
System.exit(0);
}
//how about if the user want to rent other cars?
}
}
2020-01-13
我是應為受到你代碼部分啟迪,現在回報你。你可以使用while(true)這種循環來返回上一步,當輸入你特定指令時進行下步循環。即你先判斷用戶輸入是否對,錯就continue,用戶輸入你所設定的特定字符串以后返回上一步。
2020-02-19
int rentOrNot=2;
while ((rentOrNot!=0) &&(rentOrNot !=1)) {
rentOrNot=input.nextInt();
if (rentOrNot==0){
System.out.println("感謝使用,再見");
}else if (rentOrNot!=1) {
System.out.println("輸入有誤,請重新輸入");
}else if (rentOrNot==1) {
System.out.println("您可租車的 類型及其價目表:");
}
}
第一個問題 while怎么用,我是這么寫的,供參考
2020-01-10
list裝汽車,選相同的汽車list里邊加一個,用do-while 里邊多寫幾個if作為每一步的操作,if里的return寫while里邊的條件(就是希望跳轉到那個操作步驟)