【发布时间】:2021-07-06 11:11:01
【问题描述】:
我正在尝试制作一系列视频游戏。我想实现一个数组方法,如果有一个为空的可用索引,它将向数组添加一个新游戏。但是,当我尝试实现这种方法时。它会抛出 NullPointerException。
这是main方法中的代码:
public static void main(String[] args) {
Game[] arr = new Game[3];
Game t1 = new Game("The Walking Dead", 2012, "Telltale games");
Game t2 = new Game("The Wolf Among Us", 2014, "Telltale games");
Game t3 = new Game("Half-Life 2", 2007, "Valve");
try {
arr[2].addGame(t3);
} catch(NullPointerException e) {
System.out.println("Caught NullPointer");
arr[0] = t1;
}
System.out.println(arr[0]);
}
这是我在“游戏”类中实现的方法:
public Game addGame(Game game) {
//TODO
for(int i = 0; i < arr.length; i++) {
try {
if(arr[i] == null) {
arr[i] = game;
}
} catch(NullPointerException e) {
System.out.println("Caught exception");
arr[i] = game;
return arr[i];
}
}
return game;
}
我非常迷茫,我不明白当我明确尝试检查 null 以尝试将新的“游戏”插入空索引时它是如何抛出 nullpointerexception 的。 任何帮助深表感谢! 谢谢!
【问题讨论】:
-
Game[] arr = new Game[3];创建一个空数组,因此数组中的每个元素都是null。您需要为数组分配一个值,即arr[0] = new Game("The Walking Dead", 2012, "Telltale games");。您还应该检查每个元素以确定它是否已被分配,即arr[0] != null,然后再尝试访问它
标签: java arrays exception nullpointerexception