1

こんにちは、私はここに新しいです。

現在Javaでプレイリストソフトを作っています。Songファイルから取得してプレイリストに保存したい。ファイルから取得する必要があることを示すために、曲のクラスに何かを配置する必要がありますか? 私が見逃しているものは何ですか?私に答えてください。

public class Song {
    private Float playTime;
    private String songName;
    private String artist;

    //getters
    public Float getPlayTime() { return playTime; }
    public String getSongName() { return songName; }
    public String getArtist() { return artist; }
}

以下は私のプレイリストクラスです。(私のものではありません。ネット上のどこかで入手しました。)

public class Playlist {

    //Instance variable
    private List<Song> songs; //arraylist of songs
    private String playlistName; //Playlist name

    public Playlist(String name) { 
        songs = new ArrayList<Song>(); //initalize Arraylist to hold Song type
        playlistName = name;
    }

    //Methods:

    //Returns the playlist name
    public String playlistName() {
        return playlistName;   
    }

    //adds Song s to Playlist
    public boolean addSong(Song s) {
        return songs.add(s); 
    }

    //return list. Note return is List<Song>.
    public List<Song> getList() {
        System.out.print(playlistName + ":");
        for (int i = 0; i < songs.size(); i++)
        System.out.print(songs.get(i));
        return songs;
    }

    public boolean removeSong(Song s) {
        return songs.remove(s);
    }

    public double playlistTime() {
        double sum = 0;
        for (int j = 0; j < songs.size(); j++)
            sum = sum + songs.get(j).getPlayTime();
        return sum;
    }

    public boolean isSongInPlaylist(String name) {
        boolean x = false;
        for (int i = 0; i < songs.size(); i++)
        if (songs.get(i).getSongName().equalsIgnoreCase(name))
            x = true;  
        return x;
    }

    public void songsByArtist(String name) {
        for (int i = 0; i < songs.size(); i++)
            if( songs.get(i).getArtist().equals(name))
                System.out.println(songs.get(i).getArtist());
    }

    public boolean addSongsFrom(Playlist p) { // enter code here
        boolean x = true;
        for (int i = 0; i < p.getList().size(); i++)
            if (p.getList().get(i).getSongName().equals(songs.get(i).getSongName()))
                x = x;
            else
                this.addSong(p.getList().get(i));
        return x;
    }

    public int totalSongs() {
        return songs.size();
    }

    public String toString() {
        return playlistName;
    }
}
4

1 に答える 1

0

あなたのクラスは大丈夫です。メイン メソッドでは、ファイルから曲を読み取る必要があります。処理する曲の形式を指定しませんでした。Mp3、waw、または架空のデータを含む単純な txt ファイルですか?

たとえば、MP3 を使用する場合は、MP3SPIを使用できます。

File file = new File(YOUR_FILE_PATH);
 AudioFileFormat fileFormat = AudioSystem.getAudioFileFormat(file);
    if (fileFormat instanceof TAudioFileFormat) {
        Map<?, ?> properties = ((TAudioFileFormat) fileFormat).properties();
        String key = "duration";
        Long lengthOfFile= (Long) properties.get(key);
        //get other properties, then instantiate the Song object, then call addSong()
}
于 2013-10-19T10:56:28.143 に答える