某租车公司提供租车服务,针对不同的车辆类型,日租金的计算方式不同,具体地,对于货车而言,根据载重量load(单位是吨)计算,公式为loadx 1000;对于大型客车而言,根据车内座位数seats计算,公式为seatsx50;对于小型汽车而言,根据车辆等级和折旧年数计算,公式为200*level/sqrt(year),其中sqrt表示平方根。设计合适的类继承结构实现上述功能,构造租车公司类CarRentCompany,提供静态函数rentVehicles,能够给定一组待租车辆,计算日租金总额。 在main函数中,读入多个车辆数据,并计算总的日租金。 输入描述: 汽车数量 汽车种类 该类汽车相关属性 其中1表示货车,2表示大型客车,3表示小型汽车 输出描述: 总的日租金,保留两位小数
时间: 2023-06-08 17:08:06 浏览: 211
好的,您的问题我已经接收到了。下面是我的回答:
首先,我们需要设计一个Vehicle类作为所有车辆类的基类,其中包括车辆的基本属性和方法,如车牌号、品牌、型号、租金计算方法等。然后,根据不同的车辆类型,设计子类,分别是Truck、Bus和Car类,并重写租金计算方法。
接下来,我们设计一个CarRentCompany类作为租车公司类,其中包括一个静态函数rentVehicles,能够给定一组待租车辆,计算日租金总额。在该函数中,我们需要对传入的车辆数组进行遍历,调用各自的租金计算方法,累加日租金并返回结果。
最后,在main函数中,我们通过读入多个车辆数据,构造对应的车辆对象,然后将这些车辆对象放入一个数组中,调用CarRentCompany的rentVehicles函数计算总日租金即可。
下面是完整的代码实现,希望能够帮到您:
```java
import java.util.Scanner;
class Vehicle {
private String plateNumber; // 车牌号
private String brand; // 品牌
private String model; // 型号
public Vehicle(String plateNumber, String brand, String model) {
this.plateNumber = plateNumber;
this.brand = brand;
this.model = model;
}
public String getPlateNumber() {
return plateNumber;
}
public String getBrand() {
return brand;
}
public String getModel() {
return model;
}
// 计算租金方法,需要在子类中重写
public double calculateRent() {
return 0; // 默认值为0
}
}
class Truck extends Vehicle {
private double load; // 载重量
public Truck(String plateNumber, String brand, String model, double load) {
super(plateNumber, brand, model);
this.load = load;
}
public double getLoad() {
return load;
}
@Override
public double calculateRent() {
return load * 1000; // 货车日租金=载重量×1000
}
}
class Bus extends Vehicle {
private int seats; // 座位数
public Bus(String plateNumber, String brand, String model, int seats) {
super(plateNumber, brand, model);
this.seats = seats;
}
public int getSeats() {
return seats;
}
@Override
public double calculateRent() {
return seats * 50; // 大型客车日租金=座位数×50
}
}
class Car extends Vehicle {
private int level; // 车辆等级
private int year; // 折旧年数
public Car(String plateNumber, String brand, String model, int level, int year) {
super(plateNumber, brand, model);
this.level = level;
this.year = year;
}
public int getLevel() {
return level;
}
public int getYear() {
return year;
}
@Override
public double calculateRent() {
return 200 * level / Math.sqrt(year); // 小型汽车日租金=200×等级÷折旧年数的平方根
}
}
class CarRentCompany {
public static double rentVehicles(Vehicle[] vehicles) {
double totalRent = 0;
for (Vehicle vehicle : vehicles) {
totalRent += vehicle.calculateRent();
}
return totalRent;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 汽车数量
Vehicle[] vehicles = new Vehicle[n];
for (int i = 0; i < n; i++) {
int type = scanner.nextInt(); // 汽车种类
String plateNumber = scanner.next(); // 车牌号
String brand = scanner.next(); // 品牌
String model = scanner.next(); // 型号
if (type == 1) { // 货车
double load = scanner.nextDouble(); // 载重量
vehicles[i] = new Truck(plateNumber, brand, model, load);
} else if (type == 2) { // 大型客车
int seats = scanner.nextInt(); // 座位数
vehicles[i] = new Bus(plateNumber, brand, model, seats);
} else if (type == 3) { // 小型汽车
int level = scanner.nextInt(); // 车辆等级
int year = scanner.nextInt(); // 折旧年数
vehicles[i] = new Car(plateNumber, brand, model, level, year);
}
}
System.out.printf("%.2f", CarRentCompany.rentVehicles(vehicles)); // 输出总日租金,保留两位小数
}
}
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![mp4](https://img-home.csdnimg.cn/images/20210720083504.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://img-home.csdnimg.cn/images/20250102104920.png)
![ppt](https://img-home.csdnimg.cn/images/20241231044937.png)
![doc](https://img-home.csdnimg.cn/images/20241231044833.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)