//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("歡迎使用答答租車系統(tǒng)");
System.out.println("您是否要租車:1是?0否");
String?input?=?Type.next();
if?(input.equals("1"))?{
System.out.println("您可租車的類型及價(jià)目表:");
System.out.println("序號(hào)\t汽車名稱\t租金\t\t容量");
int?i?=?1;//?車輛序號(hào)
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("請(qǐng)輸入您要租車的數(shù)量:");
int?num?=?Type.nextInt();
double?rentsum?=?0;//?租車總金額
double?Peosum?=?0;//?載人總數(shù)
double?CargoCsum?=?0;//?載貨總數(shù)
String[]?PassengerName?=?new?String[4];//?存放可載人車輛的name的數(shù)組
String[]?CargoCars?=?new?String[4];//?存放可載貨車輛的name的數(shù)組
int?p?=?0;
int?c?=?0;
for?(int?n?=?1;?n?<=?num;?n++)?{
System.out.println("輸入第"?+?n?+?"輛車的序號(hào):");
int?x?=?Type.nextInt();
rentsum?+=?cars[x?-?1].rent;//?計(jì)算租車金額
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("請(qǐng)輸入租車天數(shù):");
int?y?=?Type.nextInt();
System.out.println("您的賬單:");
System.out.println("***可載人的車有:");
for?(String?pn?:?PassengerName)?{
System.out.print(pn?+?"\t");
}
System.out.println("載人總數(shù):"?+?Peosum?+?"人");
System.out.println("***可載貨的車有:");
for?(String?cc?:?CargoCars)?{
System.out.print(cc?+?"\t");
}
System.out.println("載貨總數(shù):"?+?CargoCsum?+?"噸");
rentsum?=?rentsum?*?y;
System.out.println("***租車總金額:"?+?rentsum);
}?else?if?(input.equals("2"))?{
System.out.println("歡迎您訪問答答租車系統(tǒng),再見。");
}?else?{
System.out.println("輸入錯(cuò)誤!");
main(null);//?再次調(diào)用主函數(shù)
}
}
}
3 回答
已采納

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