某租车公司提供租车服务,针对不同的车辆类型,日租金的计算方式不同,具体地,对于货车而言,根据载重量load(单位是吨)计算,公式为loadx 1000;对于大型客车而言,根据车内座位数seats计算,公式为seatsx50;对于小型汽车而言,根据车辆等级和折旧年数计算,公式为200*level/sqrt(year),其中sqrt表示平方根。设计合适的类继承结构实现上述功能,构造租车公司类CarRentCompany,提供静态函数rentVehicles,能够给定一组待租车辆,计算日租金总额。 在main函数中,读入多个车辆数据,并计算总的日租金。 输入描述: 汽车数量 汽车种类 该类汽车相关属性 其中1表示货车,2表示大型客车,3表示小型汽车 输出描述: 总的日租金,保留两位小数

时间: 2023-06-08 13:08:06 浏览: 63
好的,您的问题我已经接收到了。下面是我的回答: 首先,我们需要设计一个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)); // 输出总日租金,保留两位小数 } } ```

相关推荐

最新推荐

recommend-type

使用Python实现租车计费系统的两种方法

本文通过两种方法给大家分享了使用Python实现租车计费系统,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
recommend-type

基于STC89C51单片机的出租车计费器设计

本文以单片机STC89C51 为核心设计一款出租车计费器, 使能够实现里程及对应价格的显示,由于采用芯片的自动定时计数,所以能够准确的计算出总的行车里程并能转换成对应的价格来,这样能够避免出租车司机作弊的可能性...
recommend-type

基于FPGA的出租车计价器设计

设计要求:设计一个出租车计价器。该计价器的计费系统:行程 3公里内,且等待累计时间2分钟内,起步费为10元;3公里外以每公里1.6元计费,等待累计时间2分钟外以每分钟以1.5元计费,并能显示行驶公里数、等待累计...
recommend-type

西安电子科技大学计算方法上机作业.doc

西安电子科技大学的计算方法上机作业的参考代码,包括例题讲解、思路分析、源代码分析、运行截图,思路分析,分析与总结
recommend-type

基于51单片机的出租车计费系统设计

基于出租车行业的需求,传统的出租车计费器发展使用了十几年,在稳定性、成本、以及使用习惯上都具有一些优势。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

用Spring boot和vue写一个登录注册界面

好的,这是一个比较常见的技术问题,我可以为您提供一些参考资料和思路。首先,您可以使用Spring Boot作为后端框架来处理用户认证和注册的逻辑,比如使用Spring Security实现用户登录认证。同时,您还需要设计相应的数据模型和数据库表结构来存储用户信息。在前端方面,您可以使用Vue.js作为框架来构建登录注册页面,使用Axios来发起API请求并和后端进行交互。当然,在实现过程中,还需要考虑一些具体细节,比如数据校验、安全性和用户体验等方面。希望这些信息能够帮助到您。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。