Java複習之物聯網考試242 - 租車服務
242 - 租車服務
Time Limit: 1000 Memory Limit: 65535
Submit: 181 Solved: 146
Description
某租車公司提供租車服務,針對不同的車輛型別,日租金的計算方式不同,具體地,對於貨車而言,根據載重量load(單位是噸)計算,公式為load*1000;對於大型客車而言,根據車內座位數seats計算,公式為seats*50;對於小型汽車而言,根據車輛等級和折舊年數計算,公式為200*level/sqrt(year),其中sqrt表示平方根。設計合適的類繼承結構實現上述功能,構造租車公司類CarRentCompany,提供靜態函式rentVehicles,能夠給定一組待租車輛,計算日租金總額。 在main函式中,讀入多個車輛資料,並計算總的日租金。
Input
汽車數量 汽車種類 該類汽車相關屬性 其中1表示貨車,2表示大型客車,3表示小型汽車
Output
總的日租金,保留兩位小數
Sample Input
3 1 3 2 50 3 5 5
Sample Output
5947.21
HINT
Pre Append Code
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int c = sc.nextInt();
Vehicle[] vs = new Vehicle[c];
for (int i=0;i<c;i++) {
int type = sc.nextInt();
Vehicle v = null;
if (type == 1) {//貨車
vs[i] = new Truck (sc.nextDouble());
} else if (type == 2) {
vs[i] = new Keche(sc.nextInt());
} else if (type == 3) {
vs[i] = new Car(sc.nextInt(), sc.nextInt());
}
}
System.out.printf("%.2f",CarRentCompany.rentVehicles(vs));
}
}
Post Append Code
針對不同的車輛型別,日租金的計算方式不同
即要寫抽象類實現多型
答案:
abstract class Vehicle { public abstract double countmoney(); } class Truck extends Vehicle { double load; public Truck(double load) { super(); this.load = load; } @Override public double countmoney() { // TODO Auto-generated method stub return load*1000; } } class Keche extends Vehicle { int seats; public Keche(int seats) { super(); this.seats = seats; } @Override public double countmoney() { // TODO Auto-generated method stub return seats*50; } } class Car extends Vehicle { int level,year; public Car(int level, int year) { super(); this.level = level; this.year = year; } @Override public double countmoney() { // TODO Auto-generated method stub return 200*level/Math.sqrt(year); } } class CarRentCompany { public static double rentVehicles(Vehicle []h) { double rent = 0; for(Vehicle i : h) rent += i.countmoney(); return rent; } }