【发布时间】:2015-05-04 00:57:58
【问题描述】:
我已尝试查看有关此问题的帖子,但我的代码中的此错误仍然存在一些问题。所以在第四行,我创建了一个名为SongDatabase 的实例变量来访问SongDatabase 类。但是当我下线时,case 1 下的SongDatabase.addNewSong();,我得到一个 java.lang.NullPointerException: null 错误。
接口类:
public class Interface
{
Scanner console = new Scanner(System.in);
private SongDatabase SongDatabase;
public static void main(String[] args) {
Interface intFace = new Interface();
intFace.run();
}
private void run() {
switch (userInput) {
case 1:
SongDatabase.addNewSong();
break;
case 2:
SongDatabase.removeSong();
break;
case 3:
SongDatabase.sortSongs();
break;
default:
System.out.println("Please enter a valid number.");
break;
}
}
SongDatabase 类:
public class SongDatabase {
Scanner console = new Scanner(System.in);
private Song song1, song2, song3, song4;
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.");
}
}
我已经通过调试器,我知道实例变量 SongDatabase = null,这可能是导致错误的原因?我之前有一条线
SongDatabase SongDatabase = new SongDatabase();
SongDatabase.addNewSong();
相反,但我意识到这是每次都创建一个新的 SongDatabase 对象并擦除我存储在其中的内容,因此我必须对其进行更改。我真的很感激一个解决方案,因为我不知道,谢谢!
【问题讨论】:
-
构造函数主要用于初始化类字段。所以希望你以后不会错过这部分,你可以在构造函数中通过创建一个变量来实际初始化变量。
-
对于那些使用接口的人来说,你不应该将类命名为“接口”,这只会让人感到困惑
标签: java variables methods null instance