// Nik Johnson // TA: Zachary Bi // 4-2-2024 import java.util.*; import java.text.DecimalFormat; // book object, which can have a title, authors, and a list of ratings public class Book implements Media { private String title; private String author; private List authors; private List ratings; public Book(String title, String author) { this.title = title; this.author = author; } public Book(String title, List authors) { this.title = title; this.authors = authors; } public String getTitle() { return this.title; } public List getArtists() { List artists = new ArrayList<>(); if (this.author != null) { artists.add(this.author); } if (this.authors != null) { for (String author : authors) { artists.add(author); } } return artists; } public void addRating(int score) { if (this.ratings == null) { ratings = new ArrayList<>(); } this.ratings.add(score); } public int getNumRatings() { if (this.ratings == null) { return 0; } return this.ratings.size(); } public double getAverageRating() { if (this.ratings == null) { return 0; } int sum = 0; for (int rating : ratings) { sum += rating; } return (double)sum / this.ratings.size(); } public String toString() { String output = ""; output += this.title + " by " + this.getArtists() + ": "; DecimalFormat df = new DecimalFormat("#." + "0".repeat(2)); if (ratings != null) { output += df.format(this.getAverageRating()) + " (" + (this.ratings.size()) + " ratings" + ")"; return output; } return output + "No ratings yet!"; } }