summaryrefslogtreecommitdiff
path: root/debugging/Book.java
diff options
context:
space:
mode:
authorpants <niklasjo2004@gmail.com>2026-09-21 14:16:34 -0700
committerpants <niklasjo2004@gmail.com>2026-09-21 14:16:34 -0700
commit81ba9eb66f8284d8760012973f84cdbe617ceb94 (patch)
tree466432644e9e3fd66ee183ec53a1f10abb1b7faa /debugging/Book.java
Diffstat (limited to 'debugging/Book.java')
-rw-r--r--debugging/Book.java71
1 files changed, 71 insertions, 0 deletions
diff --git a/debugging/Book.java b/debugging/Book.java
new file mode 100644
index 0000000..05ef36d
--- /dev/null
+++ b/debugging/Book.java
@@ -0,0 +1,71 @@
+import java.util.*;
+
+public class Book implements Media {
+
+ private String title;
+ private String author;
+ private List<String> authors;
+ private List<Integer> ratings;
+
+ public Book(String title, String author) {
+ this.title = title;
+ this.author = author;
+ }
+
+ public Book(String title, List<String> authors) {
+ this.title = title;
+ this.authors = authors;
+ }
+
+ public String getTitle() {
+ return this.title;
+ }
+
+ public List<String> getArtists() {
+ List<String> 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() {
+ return this.title + " by " + this.getArtists() + ": " + this.getAverageRating() +
+ (this.ratings.size()) + " ratings";
+ }
+}