改变code使其实现同样的功能

zrmzhang 2012-06-06 01:50:07
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.java

public 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.java

public 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);
}
}


...全文
112 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
古布 2012-06-06
  • 打赏
  • 举报
回复
LZ代码挺整,要改的话,也就是main 方法优化一下。数据可以采取读文件或者DB的方式。

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧