父类Car(属性name,price)
子类Trunk(独有属性:载货量)
子类Bus(独有属性:载客量)
子类Pickup(独有属性:载货量,载客量)
CarRentTest(测试类)
package CarRent; public class Car { private String carName; private int carPrice; public Car(String name, int price) { carName = name; carPrice = price; } public String getCarName() { return carName; } public int getCarPrice() { return carPrice; } public void setCarName(String carName) { this.carName = carName; } public void setCarPrice(int carPrice) { this.carPrice = carPrice; } }
package CarRent; /* 货车,只能载货 */ public class Truck extends Car { private int boatload; // 载货量 public Truck(String name, int price, int boatload) { super(name, price); this.boatload = boatload; } public int getBoatload() { return boatload; } public void setBoatload(int boatload) { this.boatload = boatload; } }
package CarRent; /* 客车,只能载人 */ public class Bus extends Car { private int busload; // 载客量 public Bus(String name, int price, int busload) { super(name, price); this.busload = busload; } public int getBusload() { return busload; } public void setBusload(int busload) { this.busload = busload; } }
package CarRent; /* 皮卡,既可以载货也可以载人 */ public class Pickup extends Car { private int boatload; // 载货量 private int busload; // 载客量 public Pickup(String name, int price, int boatload, int busload) { super(name, price); this.boatload = boatload; this.busload = busload; } public int getBoatload() { return boatload; } public int getBusload() { return busload; } public void setBoatload(int boatload) { this.boatload = boatload; } public void setBusload(int busload) { this.busload = busload; } }
package CarRent; import java.util.Scanner; import java.util.List; import java.util.ArrayList; public class CarRentTest { public static void main(String[] args) { Car availableCars[] = new Car[] { new Bus("奥迪A4", 500, 4), new Bus("马自达6", 400, 4), new Pickup("皮卡雪6", 450, 2, 4), new Bus("金龙", 800, 20), new Truck("松花江", 400, 4), new Truck("依维柯", 1000, 20) }; Scanner input = new Scanner(System.in); System.out.println("欢迎使用答答租车系统:"); System.out.print("您是否要租车:1 是;0 否 >>> "); int rentOrNot = input.nextInt(); while (rentOrNot != 0 && rentOrNot != 1) { System.out.print("无效输入。请重新输入:1 是;0 否 >>> "); rentOrNot = input.nextInt(); if (rentOrNot == 0) { System.out.println("再见!欢迎下次使用!"); System.exit(0); } else if (rentOrNot == 1) { break; } else { continue; } } System.out.println("您可租车的类型及其价目表:"); System.out.println("序号\t汽车名称\t租金\t\t容量"); for (int i = 0; i < availableCars.length; i++) { Car car = availableCars[i]; System.out.print((i+1)+".\t"); System.out.print(car.getCarName()+"\t\t"); System.out.print(car.getCarPrice()+"元/天\t"); if (availableCars[i] instanceof Truck) { System.out.print("载货:"+((Truck)car).getBoatload()+"吨\n"); } else if (availableCars[i] instanceof Bus) { System.out.print("载人:"+((Bus)car).getBusload()+"人\n"); } else if (availableCars[i] instanceof Pickup) { System.out.print("载人:"+((Pickup)car).getBusload()+"人 载货:"+((Pickup)car).getBoatload()+"吨\n"); } } System.out.print("请输入您要租汽车的数量(0 ~ "+availableCars.length+"):>>> "); int rentNumber = input.nextInt(); while (rentNumber < 0 || rentNumber > availableCars.length) { System.out.print("无效输入。请重新输入(0 ~ "+availableCars.length+"):>>> "); rentNumber = input.nextInt(); } List<Integer> carsAlreadyPicked = new ArrayList<>(); for (int i = 1; i <= rentNumber; i++) { System.out.print("请输入第"+i+"辆车的序号:>>> "); int carID = input.nextInt(); while (carsAlreadyPicked.contains(carID) || carID < 1 || carID > availableCars.length) { if (carID < 1 || carID > availableCars.length) { System.out.print("无效输入。请重新输入:>>> "); } else { System.out.print("该车已选择。请重新选择:>>> "); } carID = input.nextInt(); } carsAlreadyPicked.add(carID); } System.out.print("请输入租车天数(> 0):>>> "); int rentDay = input.nextInt(); while (rentDay <= 0) { System.out.print("无效输入。请重新输入:>>> "); rentDay = input.nextInt(); } int totalExpense = 0, totalBusLoad = 0, totalBoatLoad = 0; for (int id : carsAlreadyPicked) { totalExpense += availableCars[id-1].getCarPrice(); } totalExpense *= rentDay; System.out.println("您的账单:"); System.out.println("***可载人的车有:"); for (int id : carsAlreadyPicked) { Car car = availableCars[id-1]; if (availableCars[id-1] instanceof Bus || availableCars[id-1] instanceof Pickup) { System.out.print(car.getCarName()+"\t"); totalBusLoad += (availableCars[id-1] instanceof Bus) ? ((Bus)car).getBusload() : ((Pickup)car).getBusload(); } } System.out.print("共载人:"+totalBusLoad+"人\n"); System.out.println("***载货的车有:"); for (int id : carsAlreadyPicked) { Car car = availableCars[id-1]; if (availableCars[id-1] instanceof Truck || availableCars[id-1] instanceof Pickup) { System.out.print(car.getCarName()+"\t"); totalBoatLoad += (availableCars[id-1] instanceof Truck) ? ((Truck)car).getBoatload() : ((Pickup)car).getBoatload(); } } System.out.print("共载货:"+(double)totalBoatLoad+"吨\n"); System.out.print("***租车总价格:"); System.out.print(totalExpense+"元\n"); input.close(); System.out.println("再见!欢迎下次使用!"); } }
List<Integer> carsAlreadyPicked =
new
ArrayList<>(); 有木有人告诉我这个语句的作用
参考了你的作业,写得很好,对象数组、instanceof判断对象类型、查重(能看懂,不会用)、遍历都用得很好
写得很好
不错,比我的少?