图书和音像店提供出租服务,包括图书和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 {// 书名或片名protected String title;// 构造方法public Media(String title) {this.title = title;}// 获取日租金的抽象方法public abstract double getDailyRent();
}class Book extends Media {// 图书价格private double price;// 图书的构造方法public Book(String title, double price) {super(title);this.price = price;}// 实现获取日租金的方法@Overridepublic double getDailyRent() {return price * 0.01; // 图书日租金为价格的1%}
}class DVD extends Media {// DVD的构造方法public DVD(String title) {super(title);}// 实现获取日租金的方法@Overridepublic double getDailyRent() {return 1; // DVD日租金为固定的1元}
}class MediaShop {// 静态方法,计算总租金public static double calculateRent(Media[] medias, int days) {double totalRent = 0;for (Media media : medias) {totalRent += media.getDailyRent() * days;}return totalRent;}
}