import?java.util.ArrayList;
import?java.util.List;
import?java.util.Scanner;
public?class?Test?{
????public?static?void?main(String[]?args)?{
????????System.out.println("~~~~~~~歡迎使用噠噠租車~~~~~~~~?");
????????System.out.println("您是否要租車:1.是?>>?點擊其他鍵退出");
????????Test?test?=?new?Test();
????????while?(test.test1())?{
????????????System.out.println(">>>您可選擇車的類型及其價目表:");
????????????System.out.println("-------------------------------------------");
????????????Car[]?cars?=?{new?PassengerCar(1,?"奧迪A8L",?600,?4),
????????????????????new?PassengerCar(2,?"奔馳G",?800,?4),
????????????????????new?Pickup(3,?"福特猛禽",?1300,?4,?2),
????????????????????new?PassengerCar(4,?"寶馬M5",?700,?20),
????????????????????new?Truck(5,?"斯柯達",?500,?4),
????????????????????new?Truck(6,?"依維柯",?1000,?20)
????????????};
????????????System.out.println("序號"?+?"??"?+?"\t"?+?"車型"?+?"?????"?+?"\t"?+?"租金"?+?"??????"?+?"\t"?+?"容量");
????????????for?(Car?car?:?cars)?{
????????????????//判斷左邊的類是否是右邊的實例類
????????????????if?(car.getClass().equals(PassengerCar.class))?{
????????????????????//如果是客車的實例類
????????????????????System.out.println(car.getId()?+?"\t"?+?"\t"?+?car.getName()?+?"\t"?+?"\t"?+?car.getPrice()?+?"/天"?+?"\t"
????????????????????????????+?"\t"?+?"載客"?+?((PassengerCar)?car).getCapacity()?+?"/人");
????????????????}
????????????????if?(car.getClass().equals(Truck.class))?{
????????????????????System.out.println(car.getId()?+?"\t"?+?"\t"?+?car.getName()?+?"\t"?+?"\t"?+?car.getPrice()?+?"/天"?+?"\t"
????????????????????????????+?"\t"?+?"載貨"?+?((Truck)?car).getCargoVolume()?+?"/噸");
????????????????}
????????????????if?(car.getClass().equals(Pickup.class))?{
????????????????????System.out.println(car.getId()?+?"\t"?+?"\t"?+?car.getName()?+?"\t"?+?"\t"?+?car.getPrice()?+?"/天"?+?"\t"
????????????????????????????+?"\t"?+?"載客"?+?((Pickup)?car).getCapacity()?+?"/人"?+?"?"?+?"載貨"?+?((Pickup)?car).getCargoVolume()?+?"/噸");
????????????????}
????????????}
????????????System.out.println("-------------------------------------------");
????????????System.out.println("-->請輸入你要租的汽車的數(shù)量:");
????????????Scanner?z?=?new?Scanner(System.in);
????????????int?carNum?=?z.nextInt();//用于接收租車的數(shù)量
????????????List<Car>?carList?=?new?ArrayList<Car>();
????????????int?add?=?0;
????????????List<Car>?carListPassenger?=?new?ArrayList<>();?//用來儲存可載人的車輛
????????????List<Car>?carListTrunk?=?new?ArrayList<>();??//用來儲存可載貨的車輛
????????????int?passengerCar?=?0;?//載人數(shù)
????????????int?carCargo?=?0;?//載貨量
????????????int?carPrice?=?0;?//總資金
????????????for?(int?i?=?0;?i?<?carNum;?i++)?{
????????????????System.out.println(">>請輸入第"?+?(i?+?1)?+?"輛車的序號:");
????????????????int?num?=?z.nextInt();?//用于接收輸入的汽車的序號
????????????????carList.add(cars[num?-?1]);
????????????????System.out.println("----成功添加:"?+?carList.get(add).getName());
????????????????if?(cars[num?-?1].getClass().equals(PassengerCar.class))?{
????????????????????passengerCar?+=?((PassengerCar)?carList.get(add)).getCapacity();
????????????????????carPrice?+=?((PassengerCar)?carList.get(add)).getPrice();
????????????????????carListPassenger.add(carList.get(add));
????????????????}
????????????????if?(cars[num?-?1].getClass().equals(Pickup.class))?{
????????????????????passengerCar?+=?((Pickup)?carList.get(add)).getCapacity();
????????????????????carCargo?+=?((Pickup)?carList.get(add)).getCargoVolume();
????????????????????carPrice?+=?((Pickup)?carList.get(add)).getPrice();
????????????????????carListPassenger.add(carList.get(add));
????????????????????carListTrunk.add(carList.get(add));
????????????????}
????????????????if?(cars[num?-?1].getClass().equals(Truck.class))?{
????????????????????carCargo?+=?((Truck)?carList.get(add)).getCargoVolume();
????????????????????carPrice?+=?((Truck)?carList.get(add)).getPrice();
????????????????????carListTrunk.add(carList.get(add));
????????????????}
????????????????add++;
????????????}
????????????System.out.println(">>請輸入租車的天數(shù):");
????????????Scanner?g?=?new?Scanner(System.in);
????????????int?carDay?=?g.nextInt();
????????????carPrice?=?carPrice?*?carDay;
????????????System.out.println("------------租車選車完成------------"?+?"\n"?+?"下面開始統(tǒng)計數(shù)據(jù)..........");
????????????//租車完成,開始統(tǒng)計數(shù)據(jù)并輸出
????????????System.out.print("您租的車共有"?+?carNum?+?"輛:"?+?"?");
????????????for?(Car?car?:?carList)?{
????????????????System.out.print(car.getName()?+?"?");
????????????}
????????????System.out.println();
????????????System.out.println("共租用:"?+?carDay?+?"?天");
????????????System.out.println("可載人:"?+?passengerCar?+?"?人");
????????????System.out.println("可載貨:"?+?carCargo?+?"?噸");
????????????System.out.println("需要付款:"?+?carPrice?+?"?元");
????????????System.out.println("->請輸入付款金額:");
????????????System.out.println("------------");
????????????Scanner?x?=?new?Scanner(System.in);
????????????while?(carPrice?!=?x.nextInt())
????????????????System.out.println("------------"?+?"\n"?+?"輸入錯誤,請重新輸入金額!");
????????????System.out.println("------------");
????????????System.out.println("->請輸入付款密碼:");
????????????Scanner?y?=?new?Scanner(System.in);
????????????while?(y.nextInt()?!=?123456)
????????????????System.out.println("------------"?+?"\n"?+?"密碼錯誤,請重新輸入!");
????????????System.out.println("------------");
????????????System.out.println("??????????????交易成功!");
????????????System.out.println();
????????????System.out.println("------------感謝您的使用--------------");
????????????System.out.println("………………繼續(xù)租車請按1,退出請按其他鍵………………");
????????}
????????System.out.println("***歡迎您再次使用,再見!***");
????}
????//?捕獲輸入?yún)?shù)不正確異常
????public?boolean?test1()?{
????????try?{
????????????Scanner?z?=?new?Scanner(System.in);
????????????if?(z.nextInt()?==?1)?{
????????????????return?true;
????????????}?else?{
????????????????return?false;
????????????}
????????}?catch?(Exception?e1)?{
????????????return?false;
????????}
????}
}
2018-04-12