java旧题复习
作业4
6-3 租车服务 (20分)
某租车公司提供租车服务,针对不同的车辆类型,日租金的计算方式不同,具体地,对于货车而言,根据载重量load(单位是吨)计算,公式为loadx 1000;对于大型客车而言,根据车内座位数seats计算,公式为seatsx50;对于小型汽车而言,根据车辆等级和折旧年数计算,公式为200*level/sqrt(year),其中sqrt表示平方根。设计合适的类继承结构实现上述功能,构造租车公司类CarRentCompany,提供静态函数rentVehicles,能够给定一组待租车辆,计算日租金总额。 在main函数中,读入多个车辆数据,并计算总的日租金。
输入描述:
汽车数量 汽车种类 该类汽车相关属性 其中1表示货车,2表示大型客车,3表示小型汽车
输出描述:
总的日租金,保留两位小数
裁判测试程序样例:
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));
}
}
/* 你的代码被嵌在这里 */
输入样例:
在这里给出一组输入。例如:
3
1 3
2 50
3 5 5
输出样例:
在这里给出相应的输出。例如:
5947.21
ans:
abstract class Vehicle{//将车辆类写成抽象类更易实现
abstract double getMoney();
}
class Truck extends Vehicle{//货车
double load;
public Truck(double load) {
this.load=load;
}
public double getMoney() {
return 1000*this.load;
}
}
class Keche extends Vehicle{//卡车
int seat;
public Keche(int seat) {
this.seat=seat;
}
public double getMoney() {
return 50*this.seat;
}
}
class Car extends Vehicle{//小型车辆
int level;
int year;
public Car(int level,int year) {
this.level=level;
this.year=year;
}
public double getMoney() {
return 200*this.level/(Math.sqrt(this.year));
}
}
class CarRentCompany{
public static double rentVehicles(Vehicle[] vs) {//静态方法
double sum=0;
for(int i=0;i<vs.length;i++) {
sum+=vs[i].getMoney();
}
return sum;
}
}