在类NullPointerException中实例化一个类

拉奇

我在playlist1.firstSong = song;下面的行(第9行)中收到nullPointerException错误有任何想法吗?

播放清单类别:

public class Playlist { 
Scanner console = new Scanner(System.in); 
private Playlist playlist1=null, playlist2=null; 

private Song firstSong;
private Song secondSong;
private Song thirdSong;

public void setSong(Song song) { 
    if (song != null) {
        if (playlist1.firstSong == null) {
            playlist1.firstSong = song;
            System.out.println("The song has been added to the playlist.");
        }

        else if (playlist1.secondSong == null) {
            playlist1.secondSong = song;
            System.out.println("The song has been added to the playlist.");
        }

        else if (playlist1.thirdSong == null) {
            playlist1.thirdSong = song;
            System.out.println("The song has been added to the playlist.");
        }
        else {
            System.out.println("This playlist is currently full with 3 songs. Please delete a song before attempting to add a new one.");
        }
    }
   }

addSongToPlaylist方法:

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("");

    database.Display();

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

getSong方法:

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

任何帮助将不胜感激,谢谢!

化妆品

嗯...您在播放列表课程中感到困惑。您的播放列表实际上存储了3首歌曲,仅此而已,您无需使用playlist1和playlist2。尝试改用这个:

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

public void setSong(Song song) { 
    if (song != null) {
        if (this.firstSong == null) {
            this.firstSong = song;
            System.out.println("The song has been added to the playlist.");
        }

        else if (this.secondSong == null) {
            this.secondSong = song;
            System.out.println("The song has been added to the playlist.");
        }

        else if (this.thirdSong == null) {
            this.thirdSong = song;
            System.out.println("The song has been added to the playlist.");
        }
        else {
            System.out.println("This playlist is currently full with 3 songs. Please delete a song before attempting to add a new one.");
        }
    }
   }

想想当您创建播放列表实例时,可以在其中存储3首歌曲,仅此而已。如果您需要更多播放列表,则可以创建更多播放列表。

但是,如果您要存储3首以上的歌曲怎么办?为此,您可以仅使用array例如(或任何类型的存储)重构代码让我们尝试一个Vector:

public class Playlist { 

private Vector<Song> songList;

public void setSong(Song song) { 
    if (song != null) {
             songList.add(song);
        }
   }
public Song getSong(int nb) {
    if (nb > 0 && nb < songList.size()) //We don't want to check the song #-1 or a song that would be out of bonds
         return songList.elementAT(nb);
}
 } 

而且那里还有一些更清洁的东西。(上面的代码中肯定有一些错别字,我在这里不能真正检查它们,但这只是一个例子。)

作为评论的答案:如果您想使用2个播放列表,也可以,只需在您的main中使用:

   Playlist firstPlaylist;
   Playlist secondPlaylist;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在groupby方法中实例化一个类

来自分类Dev

根据PHP中的参数实例化一个类

来自分类Dev

防止实例化一个类

来自分类Dev

实例化一个类-Java

来自分类Dev

从JavaScript中的另一个实例实例化一个类?

来自分类Dev

如何在javascript中的另一个类中实例化类?

来自分类Dev

如何使PHP类在其构造函数中实例化另一个类?

来自分类Dev

在 __init__ 内部或外部的类中实例化一个类有什么区别?

来自分类Dev

在另一个命名空间类中实例化命名空间类

来自分类Dev

Java:如何在另一个类中使用在一个类中实例化的对象?

来自分类Dev

如何在另一个模型类中实例化一个模型类?

来自分类Dev

定位父类中的类的最后一个实例

来自分类Dev

是否可以确定实例化一个类的当前实例的类的实例?

来自分类Dev

在另一个类实例中获取一个类实例的变量的值

来自分类Dev

如何在一个类的实例中声明一个类的实例?

来自分类Dev

我可以在抽象类中创建一个为实例化类构造实例的方法吗?

来自分类Dev

用另一个类的模板参数实例化一个模板类

来自分类Dev

重复实例化一个匿名类是浪费吗?

来自分类Dev

如何正确实例化一个类?

来自分类Dev

从超类实例化一个子类

来自分类Dev

实例化一个实现通用接口的类

来自分类Dev

实例化一个类-有或没有Parens?

来自分类Dev

如何正确实例化一个类?

来自分类Dev

PHP:实例化一个类并获取属性

来自分类Dev

实例化一个类的静态对象

来自分类Dev

实例化一个实现通用接口的类

来自分类Dev

如何从另一个类访问实例化?

来自分类Dev

在Java中像在Java中那样实例化一个抽象类

来自分类Dev

从 CustomView 中检索 id 实例化在另一个类中

Related 相关文章

热门标签

归档