2015-05-04 113 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

相关问题