Blue J Java - 初学者 - 一次播放两首曲目

时间:2017-08-05 16:49:28

标签: java bluej

我对Java比较陌生,只是读一本朋友借给我的书。

问题是

如果您在不停止第一首曲目的情况下播放两首曲目,则两张曲目将同时播放。 这不是很有用。更改您的程序,以便自动播放曲目 当另一首曲目开始时停止

到目前为止它是这样的:

public void playTrack(int index)
{
    if(indexValid(index)) {
        Track track = tracks.get(index);
        player.startPlaying(track.getFilename());
        track.incrementCount();
        System.out.println("Now playing: " + track.getArtist() + " - " + 
track.getTitle());
       }

我的计划是添加另一个if语句,然后以某种方式说出一首歌是否正在播放然后停止当前并开始下一首,但我不确定如何做到这一点。

这是我第一次在这个论坛上道歉,我对java很新。

以下是此类

的完整代码
import java.util.ArrayList;

/**

 */
            public class MusicOrganizer
            {
                // An ArrayList for storing music tracks.
                private ArrayList<Track> 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 < 0) {
                        System.out.println("Index cannot be negative: " + index);
                        valid = false;
                    }
                    else 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<Track> tempTracks = reader.readTracks(folderName, ".mp3");

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

1 个答案:

答案 0 :(得分:0)

在开始index指定的曲目之前,你必须通过执行以下操作来停止所有其他曲目:

for(int i = 0; i < tracks.size(); i++) {
    if(i != trackToPlay) {
        player.stop(tracks.get(i));
    }
}