gpt4 book ai didi

java - 编写一个方法以随机顺序播放轨道列表中的每个轨道一次

转载 作者:行者123 更新时间:2023-12-01 07:09:05 28 4
gpt4 key购买 nike

我不确定我在这里做错了什么。我已经做到了,你可以从列表中随机播放一首歌曲,但无法随机播放整个列表一次。我能得到的任何帮助将不胜感激。我的代码是:

import java.util.ArrayList;
import java.util.Random;

/**
* A class to hold details of audio tracks.
* Individual tracks may be played.
*
* @author William Gambill
* @version July 10, 2013
*/
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;
// Used to initialize the random feature.
private Random randomtrack;

/**
* Create a MusicOrganizer
*/
public MusicOrganizer()
{
tracks = new ArrayList<Track>();
player = new MusicPlayer();
reader = new TrackReader();
randomtrack = new Random();
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());
}
}

/**
* Play a track in the collection at random.
* @param index The index of the track to begin the randomizer.
*/
public void randomTrack(int index)
{
int trackNumber = getNumberOfTracks();
int rindex = randomtrack.nextInt(trackNumber);
if(indexValid(index)) {
Track track = tracks.get(rindex);
player.startPlaying(track.getFilename());
System.out.println("Now playing: " + track.getArtist() + " - " + track.getTitle());
}
}

/**
* Play all tracks in the collection at random.
* @param index The index of the track to begin the randomizer.
*/
public void randomAllTracks(int index)
{
int trackNumber = getNumberOfTracks();
int rindex = randomtrack.nextInt(trackNumber);
if(indexValid(index))
{
for(Track track : tracks)
{
player.startPlaying(track.getFilename());
System.out.println("Now playing: " + track.getArtist() + " - " + track.getTitle());
System.out.println();
}


}
}

/**
* 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);
}
}
}

最佳答案

你可以使用 Collections.shuffle()在你的代码中?根据文档:

Randomly permutes the specified list using a default source of randomness. All permutations occur with approximately equal likelihood.

您可以打乱 List 并每次从打乱后的 List 中获取第一个元素。

关于java - 编写一个方法以随机顺序播放轨道列表中的每个轨道一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17631982/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com