2015-05-04 111 views
0

只是想知道如何創建歌曲對象(歌曲1,歌曲2,歌曲3,歌曲4)的播放列表,其中每個對象都有自己的值(名稱,藝術家,文件大小,持續時間)。我無法爲這個程序使用數組/列表。只要看看下面的getSong()addSongToPlaylist()方法,我包括其他方法只是爲了顯示歌曲對象的結構。將對象從一個類移動到另一個類(Java)

這是我SongDatabase類:

public class SongDatabase { 
    Scanner console = new Scanner(System.in); 
    private Song song1=null, song2=null, song3=null, song4=null; 

public void addNewSong() {   
    if (song1 == null) { 
     song1 = getFromUser(); 
    } 
    else if (song2 == null) { 
     song2 = getFromUser(); 
    }  
    else if (song3 == null) { 
     song3 = getFromUser(); 
    } 
    else if (song4 == null) { 
     song4 = getFromUser(); 
    } 
    else { 
     System.out.println("The database is currently full. Please delete a song before adding a new one."); 
     System.out.println(""); 
    }  
} 

private Song getFromUser() { 
    Song song = new Song(); 

    System.out.println("Name of song:"); 
    song.setName(console.next()); 

    System.out.println("Artist:"); 
    song.setArtist(console.next()); 

    System.out.println("File size (MB):"); 
    song.setFileSize(console.nextInt()); 

    System.out.println("Duration (seconds):"); 
    song.setDuration(console.nextInt()); 

    System.out.println("Song successfully added.");/
    System.out.println(""); 

    return song; 
} 

public Song getSong(int songNumber) { 
    if (songNumber == 1){ 
     return song1; 
    } 
    else if (songNumber == 2){ 
     return song2; 
    } 
    else if (songNumber == 3){ 
     return song3; 
    } 
    else if (songNumber == 4){ 
     return song4; 
    } 

    else { 
     return song1; 
    } 
} 

然後我的菜單類:

public class Menu { 

    Scanner console = new Scanner(System.in); 
    private SongDatabase database = new SongDatabase(); 
    private Playlist playlist = new Playlist(); 
    private int songCount=0; 

private void addSongToPlaylist() { 
    if (songCount <=3) { 

    System.out.println("Please enter the number of the song you'd like to be added to the playlist."); 
    System.out.println(""); 

    int songNumber; 
    songNumber = console.nextInt(); 

    switch (songNumber) { 
     case 1: 
      playlist.setSong(database.getSong(1)); 
      break; 
     case 2: 
      playlist.setSong(database.getSong(2)); 
      break; 
     case 3: 
      playlist.setSong(database.getSong(3)); 
      break; 
     case 4: 
      playlist.setSong(database.getSong(4)); 
      break; 
     default: 
      System.out.println("Please enter a valid song number."); 
      break; 
    } 
    songCount++; 
    } 

到目前爲止,addSongToPlaylist()方法應該從getSong()法權鬆1對象?但我不確定如何將這些歌曲對象添加到Playlist類中的播放列表中。我知道我需要像public void setSong(parameters?)這樣的方法,但我不確定如何構造它。有任何想法嗎?幫助將不勝感激,謝謝!

+0

什麼是我們的Playlist類。 PlayList類將有名單 HJK

+0

@HJK,OP說他不能使用列表或集合或數組。 – JonasCz

+0

您不能移動對象,只能將*引用*複製到對象。 –

回答

1

如果您不能使用ListArray,如果你PlayList限制爲3 Songs那麼你可以嘗試這樣的

public class Playlist { 
    private Song firstSong; 
    private Song secondSong; 
    private Song thirdSong; 

    public void setSong(Song song) { 
     if (song != null) { 
      if (firstSong == null) { 
       firstSong = song; 
      } else if (secondSong == null) { 
       secondSong = song; 
      } else if (thirdSong == null) { 
       thirdSong = song; 
      } 
     } 
    } 
} 
0

可以使用任何數據結構保持的歌曲列表,狀陣列,列表,組,映射等等下面

是使用列表的示例的代碼。

class PlayList { 
List<Song> songList = new ArrayList<Song>(); 

void addSongInList(Song song){ 
    songList.add(song)l 
} 

} 
+0

「我無法爲這個程序使用數組/列表」所以我很難過。 – Lachie

相關問題