6-3 图书和音像租赁 (10分)
图书和音像店提供出租服务,包括图书和DVD的出租。图书包括书名(String,一个词表示)和价格(double),DVD包括片名(String,一个词表示)。它们都是按天出租,但租金计算方式却不同,图书的日租金为图书价格的1%,DVD的日租金为固定的1元。构造图书和DVD类的继承体系,它们均继承自Media类,且提供方法getDailyRent()返回日租金,构造音像店类MediaShop,提供静态函数double calculateRent(Media[] medias, int days)。 在main函数中构造了Media数组,包含图书和DVD的对象,调用calculateRent方法得到并输出租金,保留小数点两位
输入描述:
待租图书和DVD的数量
图书和DVD的详细信息
租借天数
输出描述:
总的租金
裁判测试程序样例:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Media[] ms = new Media[n];
for (int i=0; i<n; i++) {
String type = sc.next();
if (type.equals("book")) {
ms[i] = new Book(sc.next(), sc.nextDouble());
}else {
ms[i] = new DVD(sc.next());
}
}
double rent = MediaShop.calculateRent(ms, sc.nextInt());
System.out.printf("%.2f", rent);
}
}
/* 请在这里填写答案 */
输入样例:
5
book Earth 25.3
book Insights 34
dvd AI
dvd Transformer
book Sun 45.6
20
输出样例:
60.98
class Media {
String name;
double dailyRent;
void getDailyRent() {
}
}
class Book extends Media {
double price;
Book(String name,double price){
this.name=name;
this.price=price;
getDailyRent();
}
void getDailyRent() {
this.dailyRent=price*0.01;
}
}
class DVD extends Media {
DVD(String name){
this.name=name;
getDailyRent();
}
void getDailyRent() {
dailyRent=1;
}
}
class MediaShop {
static double calculateRent(Media[] medias, int days) {
int i;
double rent=0;
for(i=0;i<medias.length;i++)
{
rent=rent+medias[i].dailyRent;
}
return rent*days;
}
}