import java.util.ArrayList; public class MainClass { /** * Prints the cheapest weekly rate available among a fleet * of vehicles, or prints that no vehicle can be rented. * @param v the list of vehicles */ public void printCheapestWeeklyRate(ArrayList v) { double cheapestSoFar = 0; // the value is irrelevant boolean foundRentable = false; for (Object obj: v) { if (obj instanceof Rentable) { Rentable r = (Rentable) obj; if (!foundRentable) { // first one cheapestSoFar = r.getWeeklyRate(); foundRentable = true; } else if (r.getWeeklyRate() < cheapestSoFar) { cheapestSoFar = r.getWeeklyRate(); } } } if (foundRentable) { System.out.println("Cheapest rate = " + cheapestSoFar); } else { System.out.println("No vehicle can be rented."); } } } abstract class Vehicle { public boolean startEngine() { return false; } public abstract int getMaxSpeed(); public abstract double getVehicleValue(); } interface Rentable { public double getWeeklyRate(); } interface UsesPremiumGas { public void fillTankWithPremiumGas(double gallons); } class Car extends Vehicle implements Rentable { public int getMaxSpeed() { return 0; } public double getVehicleValue() { return 0; } public double getWeeklyRate() { return 0; } } class FancyCar extends Car implements UsesPremiumGas { public void fillTankWithPremiumGas(double gallons) { } } class Bus extends Vehicle { public int getMaxSpeed() { return 0; } public double getVehicleValue() { return 0; } }