7-7 计算日租金

单位 内蒙古师范大学

1.设计一个抽象类汽车类Vehicle,其abstract public int rent()表示日租金。

2.Truck类和Car类都继承Vehicle类。

对于Truck类而言,根据载重量属性int load(吨)计算日租金,公式为load*1000;

对于Car而言,根据车辆等级int level属性,计算日租金,公式为200*level。

3.设某租车公司CarRentCompany提供租车服务,通过静态的int rentVehicles(Vehicle[] vehicles)方法,获得出租车辆的日租金。

4.在main方法中,创建一个租车公司对象,读入多个车辆数据,1表示Truck,2表示Car,根据车辆类型和属性,计算此公司总的日租金。

输入格式:

第一行是租车公司租出的车辆数量。

后面行表示车辆类型和属性。

输出格式:

输出公司租车日租金。

输入样例:

在这里给出一组输入。例如:

2
1 2
2 1

输出样例:

在这里给出相应的输出。例如:

2200

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

答案:(一遍过哈。笑抽了)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner in=new Scanner(System.in);
        int n=in.nextInt();
        Vehicle[] vehicles=new Vehicle[n];
        CarRentCompany carRentCompanie=new CarRentCompany();
        for(int i=0;i<n;i++){
            if(in.nextInt()==1){
                int load=in.nextInt();
                vehicles[i]=new Truck(load);
            }
            else{
                int level=in.nextInt();
                vehicles[i]=new Car(level);
            }
        }
        int sum=CarRentCompany.rentVehicles(vehicles);
        System.out.print(sum);
    }
}

abstract class Vehicle{
    abstract public int rent();
    //表示日租金。
}

class Truck extends Vehicle{
    private int load;

    Truck(int load){
        this.load=load;
    }
    @Override
    public int rent(){
        return load*1000;
    }
}

class Car extends Vehicle{
    private int level;

    Car(int level)
    {
        this.level=level;
    }

    @Override
    public int rent() {
        return 200*level;
    }
}

class CarRentCompany{
    private Vehicle[] vehicles;
    public static int rentVehicles(Vehicle[] vehicles){
        int sum=0;
        for(int i=0;i<vehicles.length;i++)
        {
          sum+=vehicles[i].rent();
        }
        return sum;
    }
}

在一个基于多态和接口的汽车租赁系统设计中,首先需要创建以下几个关键组件: 1. **抽象类** `CarRent` 或者 `VehicleLease`: 它是一个抽象类,定义了租赁的基本特征,比如车辆类型、租车开始时间和结束时间等。在这个类中,我们可以定义一个抽象方法 `calculateRent()` 来计算租金。 ```java public abstract class CarRent { private String vehicleType; private Date rentalStart; private Date rentalEnd; public CarRent(String vehicleType, Date rentalStart, Date rentalEnd) { this.vehicleType = vehicleType; this.rentalStart = rentalStart; this.rentalEnd = rentalEnd; } // 抽象方法 public abstract double calculateRent(); // 其他 getter 和 setter 方法 } ``` 2. **具体类** `Sedan` 和 `Van`: 这两个类分别代表轿车和客车,它们继承自 `CarRent` 并实现 `calculateRent()` 方法,提供各自的租金计算逻辑。 ```java public class Sedan extends CarRent { // 轿车特有属性 @Override public double calculateRent() { // 轿车的租金计算逻辑 } } public class Van extends CarRent { // 客车特有属性 @Override public double calculateRent() { // 客车的租金计算逻辑 } } ``` 3. **客户类** `Customer`: 客户拥有一定的预算,可以租用各种类型的车辆,并跟踪租车记录和总费用。 ```java public class Customer { private double budget; private List<CarRent> rentals = new ArrayList<>(); public void rentCar(CarRent car) { if (car.calculateRent() <= budget) { rentals.add(car); budget -= car.calculateRent(); System.out.println("租车记录: " + car.getVehicleType()); } else { System.out.println("预算不足!"); } } // 提供获取租车记录和总费用的方法 public void printRecords() { // 打印所有租车信息 } public double getTotalCost() { return rentals.stream().mapToDouble(Rent::calculateRent).sum(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值