Problem Description
各位面向对象的小伙伴们,在学习了面向对象的核心概念——类的封装、继承、多态之后,答答租车系统开始营运了。
请你充分利用面向对象思想,为公司解决智能租车问题,根据客户选定的车型和租车天数,来计算租车费用,最大载客人数,最大载载重量。
公司现有三种车型(客车、皮卡车、货车),每种车都有名称和租金的属性;其中:客车只能载人,货车只能载货,皮卡车是客货两用车,即可以载人,也可以载货。
下面是答答租车公司的可用车型、容量及价目表:
序号 名称 载客量 载货量 租金
(人) (吨) (元/天)
1 A 5 800
2 B 5 400
3 C 5 800
4 D 51 1300
5 E 55 1500
6 F 5 0.45 500
7 G 5 2.0 450
8 H 3 200
9 I 25 1500
10 J 35 2000
要求:根据客户输入的所租车型的序号及天数,计算所能乘载的总人数、货物总数量及租车费用总金额。
Input
第二行是一个整数,代表要租车的数量N;
接下来是N行数据,每行2个整数m和n,其中:m表示要租车的编号,n表示租用该车型的天数。
Output
载客总人数 载货总重量(保留2位小数) 租车金额(整数)
若不租车,则输出:
0 0.00 0(含义同上)
Sample Input
1 2 1 1 2 2
Sample Output
15 0.00 1600
code:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int t;
Scanner reader = new Scanner(System.in);
while(reader.hasNext())
{
t = reader.nextInt();
if(t == 0) System.out.println("0 0.00 0");
else if(t == 1)
{
car[]rentCar=
{
new Pcar(800,5),
new Pcar(400,5),
new Pcar(800,5),
new Pcar(1300,51),
new Pcar(1500,55),
new Mcar(500,5,0.45),
new Mcar(450,5,2.0),
new Ncar(200,3),
new Ncar(1500,25),
new Ncar(2000,35)
};
int nn, n, m;
int Per = 0;
int Rent = 0;
double Num = 0;
nn = reader.nextInt();
while(nn-->0)
{
m = reader.nextInt();
n = reader.nextInt();
Num += (rentCar[m-1].getnum()*n);
Per += (rentCar[m-1].getper()*n);
Rent += (rentCar[m-1].getrent()*n);
}
System.out.printf("%d %.2f %d", Per, Num, Rent);
}
}
}
}
abstract class car
{
int rent;
public car(int rent) {
this.rent = rent;
}
abstract int getrent();
abstract int getper();
abstract double getnum();
}
class Pcar extends car
{
int per;
public Pcar(int rent, int per) {
super(rent);
this.per = per;
}
int getrent()
{
return rent;
}
int getper()
{
return per;
}
double getnum()
{
return 0;
}
}
class Ncar extends car
{
double num;
public Ncar(int rent, double num) {
super(rent);
this.num = num;
}
int getrent()
{
return rent;
}
int getper()
{
return 0;
}
double getnum()
{
return num;
}
}
class Mcar extends car
{
int per;
double num;
public Mcar(int rent, int per, double num) {
super(rent);
this.per = per;
this.num = num;
}
int getrent()
{
return rent;
}
int getper()
{
return per;
}
double getnum()
{
return num;
}
}