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

标签 java class object methods playlist

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

最佳答案

如果您无法使用ListArray,并且您的PlayList仅限于3首歌曲,那么您可以尝试这样

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;
            }
        }
    }
}

关于java - 将对象从一个类移动到另一个类 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30027754/

相关文章:

java - Java中如何从链表中的节点获取对象?

python - 使用类作为特殊值?

Java 接口(interface)与类作为返回类型

javascript - 使用文字点符号 setter 将属性注入(inject) ReactJS 功能组件是一种好习惯吗?

javascript - 如何获取对象数组的某些部分作为新数组?

java - 提供抽象方法的实现但限制可见性

java - 寻找回文的低效解决方案

c# - 如何使 RSACryptoServiceProvider 在没有填充(nopadding)的情况下工作?

Java:同一对象的多种表示

java - 将 null 传递给重载方法