//Car
package?com.Car;
public??class?Car?{
String?name;
double?rent;
public?void?Car(String?name,double?rent){};
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?double?getRent()?{
return?rent;
}
public?void?setRent(double?rent)?{
this.rent?=?rent;
}
}
//PassengerCar
package?com.Car;
public?class?PassengerCar?extends?Car?{
private?double?peopleC;
public?PassengerCar(String?name,double?rent,double?peopleC){
this.name?=?name;
this.rent?=?rent;
this.peopleC?=?peopleC;
}
public?double?getPeopleC()?{
return?peopleC;
}
public?void?setPeopleC(double?peopleC)?{
this.peopleC?=?peopleC;
}
}
//Pickup?
package?com.Car;
public??class?Pickup?extends?Car{
private?double?peopleC;
private?double?cargoC;
public?Pickup(String?name,double?rent,double?cargoC,double?peopleC)?{
this.name?=?name;
this.rent?=?rent;
this.cargoC?=?cargoC;
this.peopleC?=?peopleC;
}
public?double?getCargoC()?{
return?cargoC;
}
public?void?setCargoC(double?cargoC)?{
this.cargoC?=?cargoC;
}
public?double?getPeopleC()?{
return?peopleC;
}
public?void?setPeopleC(double?peopleC)?{
this.peopleC?=?peopleC;
}
}
//Truck?
package?com.Car;
public?class?Truck?extends?Car?{
private?double?cargoC;
public?Truck(String?name,double?rent,double?cargoC)?{
this.name?=?name;
this.rent?=?rent;
this.cargoC?=?cargoC;
}
public?double?getCargoC()?{
return?cargoC;
}
public?void?setCargoC(double?cargoC)?{
this.cargoC?=?cargoC;
}
}
package?com.Car;
import?java.util.Scanner;
public?class?Test?{
public?static?void?main(String[]?args)?{
Car[]?cars?=?{?new?PassengerCar("金龍大巴",?1000,?40),
new?PassengerCar("奧迪A6",?500,?4),?new?Pickup("小皮卡",?300,?5,?4),
new?Truck("大卡車",?800,?25)?};
Scanner?Type?=?new?Scanner(System.in);
System.out.println("歡迎使用答答租車系統");
System.out.println("您是否要租車:1是?0否");
String?input?=?Type.next();
if?(input.equals("1"))?{
System.out.println("您可租車的類型及價目表:");
System.out.println("序號\t汽車名稱\t租金\t\t容量");
int?i?=?1;//?車輛序號
for?(Car?Allcars?:?cars)?{
if?(Allcars?instanceof?PassengerCar)?{
System.out.println(i?+?"\t"?+?Allcars.getName()?+?"\t"
+?Allcars.getRent()?+?"/天\t載人:"
+?((PassengerCar)?Allcars).getPeopleC()?+?"/人");
i?+=?1;
}
if?(Allcars?instanceof?Pickup)?{
System.out.println(i?+?"\t"?+?Allcars.getName()?+?"\t"
+?Allcars.getRent()?+?"/天\t載人:"
+?((Pickup)?Allcars).getPeopleC()?+?"/人?載貨:"
+?((Pickup)?Allcars).getCargoC()?+?"噸");
i?+=?1;
}
if?(Allcars?instanceof?Truck)?{
System.out.println(i?+?"\t"?+?Allcars.getName()?+?"\t"
+?Allcars.getRent()?+?"/天\t載貨:"
+?((Truck)?Allcars).getCargoC()?+?"噸");
i?+=?1;
}
}
System.out.println("請輸入您要租車的數量:");
int?num?=?Type.nextInt();
double?rentsum?=?0;//?租車總金額
double?Peosum?=?0;//?載人總數
double?CargoCsum?=?0;//?載貨總數
String[]?PassengerName?=?new?String[4];//?存放可載人車輛的name的數組
String[]?CargoCars?=?new?String[4];//?存放可載貨車輛的name的數組
int?p?=?0;
int?c?=?0;
for?(int?n?=?1;?n?<=?num;?n++)?{
System.out.println("輸入第"?+?n?+?"輛車的序號:");
int?x?=?Type.nextInt();
rentsum?+=?cars[x?-?1].rent;//?計算租車金額
switch?(x?-?1)?{
case?0:
if?(cars[x?-?1]?instanceof?PassengerCar)?{
PassengerName[p]?=?cars[x?-?1].name;
Peosum?+=?((PassengerCar)?cars[x?-?1]).getPeopleC();
p?+=?1;
}
if?(cars[x?-?1]?instanceof?Pickup)?{
PassengerName[p]?=?cars[x?-?1].name;
CargoCars[c]?=?cars[x?-?1].name;
Peosum?+=?((Pickup)?cars[x?-?1]).getPeopleC();
CargoCsum?+=?((Pickup)?cars[x?-?1]).getCargoC();
p?+=?1;
c?+=?1;
}
if?(cars[x?-?1]?instanceof?Truck)?{
CargoCars[c]?=?cars[x?-?1].name;
CargoCsum?+=?((Truck)?cars[x?-?1]).getCargoC();
c?+=?1;
}
break;
case?1:
if?(cars[x?-?1]?instanceof?PassengerCar)?{
PassengerName[p]?=?cars[x?-?1].name;
Peosum?+=?((PassengerCar)?cars[x?-?1]).getPeopleC();
p?+=?1;
}
if?(cars[x?-?1]?instanceof?Pickup)?{
PassengerName[p]?=?cars[x?-?1].name;
CargoCars[c]?=?cars[x?-?1].name;
Peosum?+=?((Pickup)?cars[x?-?1]).getPeopleC();
CargoCsum?+=?((Pickup)?cars[x?-?1]).getCargoC();
p?+=?1;
c?+=?1;
}
if?(cars[x?-?1]?instanceof?Truck)?{
CargoCars[c]?=?cars[x?-?1].name;
CargoCsum?+=?((Truck)?cars[x?-?1]).getCargoC();
c?+=?1;
}
break;
case?2:
if?(cars[x?-?1]?instanceof?PassengerCar)?{
PassengerName[p]?=?cars[x?-?1].name;
Peosum?+=?((PassengerCar)?cars[x?-?1]).getPeopleC();
p?+=?1;
}
if?(cars[x?-?1]?instanceof?Pickup)?{
PassengerName[p]?=?cars[x?-?1].name;
CargoCars[c]?=?cars[x?-?1].name;
Peosum?+=?((Pickup)?cars[x?-?1]).getPeopleC();
CargoCsum?+=?((Pickup)?cars[x?-?1]).getCargoC();
p?+=?1;
c?+=?1;
}
if?(cars[x?-?1]?instanceof?Truck)?{
CargoCars[c]?=?cars[x?-?1].name;
CargoCsum?+=?((Truck)?cars[x?-?1]).getCargoC();
c?+=?1;
}
break;
case?3:
if?(cars[x?-?1]?instanceof?PassengerCar)?{
PassengerName[p]?=?cars[x?-?1].name;
Peosum?+=?((PassengerCar)?cars[x?-?1]).getPeopleC();
p?+=?1;
}
if?(cars[x?-?1]?instanceof?Pickup)?{
PassengerName[p]?=?cars[x?-?1].name;
CargoCars[c]?=?cars[x?-?1].name;
Peosum?+=?((Pickup)?cars[x?-?1]).getPeopleC();
CargoCsum?+=?((Pickup)?cars[x?-?1]).getCargoC();
p?+=?1;
c?+=?1;
}
if?(cars[x?-?1]?instanceof?Truck)?{
CargoCars[c]?=?cars[x?-?1].name;
CargoCsum?+=?((Truck)?cars[x?-?1]).getCargoC();
c?+=?1;
}
break;
default:
break;
}
}
System.out.println("請輸入租車天數:");
int?y?=?Type.nextInt();
System.out.println("您的賬單:");
System.out.println("***可載人的車有:");
for?(String?pn?:?PassengerName)?{
System.out.print(pn?+?"\t");
}
System.out.println("載人總數:"?+?Peosum?+?"人");
System.out.println("***可載貨的車有:");
for?(String?cc?:?CargoCars)?{
System.out.print(cc?+?"\t");
}
System.out.println("載貨總數:"?+?CargoCsum?+?"噸");
rentsum?=?rentsum?*?y;
System.out.println("***租車總金額:"?+?rentsum);
}?else?if?(input.equals("2"))?{
System.out.println("歡迎您訪問答答租車系統,再見。");
}?else?{
System.out.println("輸入錯誤!");
main(null);//?再次調用主函數
}
}
}
3 回答
已采納

yanrun
TA貢獻317條經驗 獲得超240個贊
先回答你的問題動態數組可以使用ArrayList。再說你的代碼中有幾個錯誤Car類的構造方法是不需要返回值的,構造方法后面的;也是沒用的,還有就是Car類需要一個無參的構造方法,否則是無法通過編譯的,你的輸入提示是輸入1和0,然而if判斷的時候變成了1和2。最后提幾個建議,變量名首字母最好是小寫,Scanner類的對象type在最后最好調用close方法關閉資源,獲得輸入數據和計算價格的代碼可以變成兩個方法,這樣可以提高程序的靈活性。希望對你有幫助。
添加回答
舉報
0/150
提交
取消