繁体   English   中英

将对象从一类移动到另一类(Java)

[英]Moving objects from one class to another (Java)

只是想知道如何创建歌曲对象(song1,song2,song3,song4)的播放列表,其中每个对象都有自己的值(名称,艺术家,文件大小,持续时间)。 我无法为此程序使用数组/列表。 只需看下面的getSong()addSongToPlaylist()方法,我就包括了其他方法,只是为了展示歌曲对象的结构。

这是我的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()方法应该从addSongToPlaylist()方法获取getSong()对象,对吗? 但是我不确定如何将这些歌曲对象添加到“ Playlist类的Playlist 我知道我需要像public void setSong(parameters?)这样的方法,但不确定如何构造它。 有任何想法吗? 帮助将不胜感激,谢谢!

如果您不能使用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;
            }
        }
    }
}

您可以使用任何数据结构来保存歌曲列表,例如数组,列表,集合,地图等。

以下是使用列表的示例代码。

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

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM