main.java
public class Main { public static void main(String[] args) { // init
Track track11 = new Track("track 11", "artist 1", 3.45);
Track track12 = new Track("track 12", "artist 1", 3.44);
Track track13 = new Track("track 13", "artist 1", 3.43);
Track track14 = new Track("track 14", "artist 1", 3.42);
Track track15 = new Track("track 15", "artist 1", 3.41); Track track21 = new Track("track 21", "artist 2", 3.59);
Track track22 = new Track("track 22", "artist 2", 2.44);
Track track23 = new Track("track 23", "artist 2", 3.12);
Track track24 = new Track("track 24", "artist 2", 4.47);
Track track25 = new Track("track 25", "artist 2", 8.25);

Track track31 = new Track("track 31", "artist 31", 3.47);
Track track32 = new Track("track 32", "artist 32", 5.75);
Track track33 = new Track("track 33", "artist 33", 8.26);
Track track34 = new Track("track 34", "artist 34", 2.45);
Track track35 = new Track("track 35", "artist 35", 1.42);

Disc disc1 = new Disc("album 1", "artist 1");
Disc disc2 = new Disc("album 2", "artist 2");
Disc disc3 = new Disc("album 3", "various artists");

Player player = new Player();

// add tracks to discs
disc1.addTrack(track11);
disc1.addTrack(track12);
disc1.addTrack(track13);
disc1.addTrack(track14);
disc1.addTrack(track15);

disc2.addTrack(track21);
disc2.addTrack(track22);
disc2.addTrack(track23);
disc2.addTrack(track24);
disc2.addTrack(track25);

disc3.addTrack(track31);
disc3.addTrack(track32);
disc3.addTrack(track33);
disc3.addTrack(track34);
disc3.addTrack(track35);

// add discs to player
player.addDisc(disc1);
player.addDisc(disc2);
player.addDisc(disc3);

// remove disc1 (which is the current disc)
player.removeDisc();

// play track 4 of disc3 
player.nextDisc();
player.nextTrack();
player.nextTrack();
player.nextTrack();
player.play();

// display current disc and track info
System.out.println("Current disc playing time " + player.getDiscPlayingTime());
System.out.println("Current track playing length " + player.getTrackLength());

// stop playing 
player.stop();

}
}
import java.util.ArrayList;Disc.javapublic class Disc {

private String title;
private String artist;
private int currentTrack;
private ArrayList<Track> tracks; public Disc(String title, String artist) {
this.title = title;
this.artist = artist;
tracks = new ArrayList<Track>();
} public void addTrack(Track track) {
tracks.add(track);
} public void play() {
tracks.get(currentTrack).play();
} public void stop() {
currentTrack = 0;
} public void nextTrack() {
currentTrack++;
if (currentTrack == tracks.size()) {
currentTrack = 0;
}
} public double getDiscPlayingTime() {
double playingTime = 0.0;
for (Track track : tracks) {
playingTime += track.getTrackLength();
}
return playingTime;
} public double getTrackLength() {
return tracks.get(currentTrack).getTrackLength();
}
}Player.java
public class Player {

private int currentDisc;
private ArrayList<Disc> discs; public Player() {
discs = new ArrayList<Disc>();
} public void addDisc(Disc disc) {
discs.add(disc);
} public void removeDisc() {
discs.remove(currentDisc);
} public void nextDisc() {
currentDisc++;
if (currentDisc == discs.size()) {
currentDisc = 0;
}
} public void nextTrack() {
discs.get(currentDisc).nextTrack();
} public void play() {
discs.get(currentDisc).play();
} public void stop() {
discs.get(currentDisc).stop();
} public double getDiscPlayingTime() {
return discs.get(currentDisc).getDiscPlayingTime();
} public double getTrackLength() {
return discs.get(currentDisc).getTrackLength();
}Track.javapublic class Track {
private String title;
private String artist;
private double length; public Track(String title, String artist, double length) {
this.title = title;
this.artist = artist;
this.length = length;
} public double getTrackLength() {
return length;
} public void play() {
System.out.println("Now playing... " + artist + " " + title);
}
}