**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
abstract class Media {
private String name;
double price;
public Media(String name, double price) {
this.name = name;
this.price = price;
}
public Media(String name) {
this.name = name;
}
abstract double getDailyRent();
}
class Book extends Media {
public Book(String name, double price) {
super(name, price);
}
@Override
double getDailyRent() {
return super.price * 0.01;
}
}
class DVD extends Media {
public DVD(String name) {
super(name);
}
@Override
double getDailyRent() {
return 1;
}
}
class MediaShop {
static double calculateRent(Media[] ms, int n) {
double total = 0;
for (Media mss : ms) {
total += mss.getDailyRent() * n;
}
return total;
}
}