Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Objects first with Java 6th edition Exercise 4:35 Regarding the last line of code in the playTrack method: getPlayCount(track, track.size()); - I understand the method

Objects first with Java 6th edition Exercise 4:35

Regarding the last line of code in the playTrack method: getPlayCount(track, track.size());

- I understand the method is being called to count the number of times the track is being played however I dont understand the correlation why we need the collection length via the method size. What exactly is the tracks size - not sure what its referring here.

- It states in part 3 of solution that "when the value of field playCount is equal to the size of the track(?), then its time to reset its value again to 0" - what does this mean? Isn't the playCount just an increment of how many times the track is being played? Why do you need to reset it to 0.

Thanx in advance

image text in transcribed

This is the other method: getPlayCount

image text in transcribed

MusicOrganizer Class

import java.util.ArrayList;

/** * A class to hold details of audio tracks. * Individual tracks may be played. * * @author David J. Barnes and Michael Klling * @version 2016.02.29 */ public class MusicOrganizer { // An ArrayList for storing music tracks. private ArrayList tracks; // A player for the music tracks. private MusicPlayer player; // A reader that can read music files and load them as tracks. private TrackReader reader;

/** * Create a MusicOrganizer */ public MusicOrganizer() { tracks = new ArrayList(); player = new MusicPlayer(); reader = new TrackReader(); readLibrary("../audio"); System.out.println("Music library loaded. " + getNumberOfTracks() + " tracks."); System.out.println(); } /** * Add a track file to the collection. * @param filename The file name of the track to be added. */ public void addFile(String filename) { tracks.add(new Track(filename)); } /** * Add a track to the collection. * @param track The track to be added. */ public void addTrack(Track track) { tracks.add(track); } /** * Play a track in the collection. * @param index The index of the track to be played. */ public void playTrack(int index) { if(indexValid(index)) { Track track = tracks.get(index); player.startPlaying(track.getFilename()); System.out.println("Now playing: " + track.getArtist() + " - " + track.getTitle()); } } /** * Return the number of tracks in the collection. * @return The number of tracks in the collection. */ public int getNumberOfTracks() { return tracks.size(); } /** * List a track from the collection. * @param index The index of the track to be listed. */ public void listTrack(int index) { System.out.print("Track " + index + ": "); Track track = tracks.get(index); System.out.println(track.getDetails()); } /** * Show a list of all the tracks in the collection. */ public void listAllTracks() { System.out.println("Track listing: ");

for(Track track : tracks) { System.out.println(track.getDetails()); } System.out.println(); } /** * List all tracks by the given artist. * @param artist The artist's name. */ public void listByArtist(String artist) { for(Track track : tracks) { if(track.getArtist().contains(artist)) { System.out.println(track.getDetails()); } } } /** * Remove a track from the collection. * @param index The index of the track to be removed. */ public void removeTrack(int index) { if(indexValid(index)) { tracks.remove(index); } } /** * Play the first track in the collection, if there is one. */ public void playFirst() { if(tracks.size() > 0) { player.startPlaying(tracks.get(0).getFilename()); } } /** * Stop the player. */ public void stopPlaying() { player.stop(); }

/** * Determine whether the given index is valid for the collection. * Print an error message if it is not. * @param index The index to be checked. * @return true if the index is valid, false otherwise. */ private boolean indexValid(int index) { // The return value. // Set according to whether the index is valid or not. boolean valid; if(index = tracks.size()) { System.out.println("Index is too large: " + index); valid = false; } else { valid = true; } return valid; } private void readLibrary(String folderName) { ArrayList tempTracks = reader.readTracks(folderName, ".mp3");

// Put all thetracks into the organizer. for(Track track : tempTracks) { addTrack(track); } } }

Track Class

/** * Store the details of a music track, * such as the artist, title, and file name. * * @author David J. Barnes and Michael Klling * @version 2016.02.29 */ public class Track { // The artist. private String artist; // The track's title. private String title; // Where the track is stored. private String filename; /** * Constructor for objects of class Track. * @param artist The track's artist. * @param title The track's title. * @param filename The track file. */ public Track(String artist, String title, String filename) { setDetails(artist, title, filename); } /** * Constructor for objects of class Track. * It is assumed that the file name cannot be * decoded to extract artist and title details. * @param filename The track file. */ public Track(String filename) { setDetails("unknown", "unknown", filename); } /** * Return the artist. * @return The artist. */ public String getArtist() { return artist; } /** * Return the title. * @return The title. */ public String getTitle() { return title; } /** * Return the file name. * @return The file name. */ public String getFilename() { return filename; } /** * Return details of the track: artist, title and file name. * @return The track's details. */ public String getDetails() { return artist + ": " + title + " (file: " + filename + ")"; } /** * Set details of the track. * @param artist The track's artist. * @param title The track's title. * @param filename The track file. */ private void setDetails(String artist, String title, String filename) { this.artist = artist; this.title = title; this.filename = filename; } }

** There is still the TrackReader Class & MusicPlayer Class - let me know if u need any of them as well

Class MusicOrganizer Method playTrack public void playTrack(int index) if(indexValid (index) Track track tracks get (index) player.startPlaying(track.getFilename0); System.out printin "Now playing: track.getArtist0 track getTitle0); The method getPlayCount has been called to count the number of times a track is played. It accepts the instance of class Track called track along with its collection length called tracks defined by the method size. getPlayCount(track, tracks.size(0)

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

T Sql Fundamentals

Authors: Itzik Ben Gan

4th Edition

0138102104, 978-0138102104

More Books

Students also viewed these Databases questions