注意:我已经完成了A,B,C。所以我要求D部分。
I have no idea how to write it? Is anyone can help me?
考虑以下课程:
public abstract class Vehicle {
public boolean startEngine() {/* code */ }
public abstract int getMaxSpeed();
public abstract double getVehicleValue();
}
public interface Rentable {
public double getWeeklyRate();
}
public interface UsesPremiumGas {
public void fillTankWithPremiumGas(double gallons);
}
public class Car extends Vehicle implements Rentable {/*code*/}
public class FancyCar extends Car implements UsesPremiumGas { /* code */ }
public class Bus extends Vehicle { /* code */ }
回答以下问题(必须表示代码编译)。
a)必须在Car类中实现哪些方法?
b)必须在FancyCar类中实现哪些方法?
c)必须在Bus类中实现哪些方法?
d)以上课程用于模拟公司拥有的车队。
完成以下方法,打印出可以租用的车队最便宜的每周费率?在没有车辆可以租用的情况下,方法应该说明。
/**
* Prints the cheapest weekly rate available among a fleet
* of vehicles, or prints that no vehicle can be rented.
* @param fleet the list of vehicles
*/
public void printCheapestWeeklyRate(ArrayList<Vehicle>fleet) {}
答案 0 :(得分:0)
对于ArrayList中的每个Vehicle,检查它是否是Rentable接口的实例。
if(vehicle instanceof Rentable){...}
为所有可租用的实例车辆调用方法getWeeklyRate()
,并将每周费率存储在带有车辆对象的地图中作为关键字。
如果地图为空,那么就不能租用任何车辆&#39;。
否则从地图中找到最小值,相应的车辆是最便宜的。
您可以尝试以下代码:
public void printCheapestWeeklyRate(ArrayList<Vehicle> fleet)
{
Map<Vehicle,Double> rateMap = new HashMap<Vehicle,Double>();
for(Vehicle vehicle : fleet)
{
if(vehicle instanceof Rentable)
{
rateMap.put(vehicle, vehicle.getWeeklyRate());
}
}
if(rateMap.isEmpty()) // No vehicle is rentable
{
System.out.println("No vehicle is available for rent");
}
else // Some vehicles are rentable
{
Vehicle cheapestVehicle;
Double min = Double.valueOf(Double.POSITIVE_INFINITY);
for(Map.Entry<Vehicle, Double> m : rateMap.entrySet()) // Get the cheapest vehicle
{
if(min.compareTo(m.getValue()) > 0)
{
cheapestVehicle = m.getKey();
}
}
// Print what you want as output using **cheapestVehicle**
}
}