1. 程式人生 > >Java複習之物聯網考試242 - 租車服務

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;

    }

}