宣称:
private Man[] man;
这是初始化:
Man[] man = new Man[1];
for (int i = 0; i < 1; i++){
man[i] = new Man();
for (int j = 0; j < 3; j++){
man[i].eatThis(table.foods[table.topFood-1]);
table.topFood--;
}
}
想要打印出来:
System.out.println(getMan(0));
转到:
public Man getMan(int k){
return man[k];
}
但我收到NullPointerException。为什么?虽然:
System.out.println(man[0]);
工作正常。
它返回:
Man = (bread, meat, cheese)
以下是例外:
Exception in thread "main" java.lang.NullPointerException
at ManRunning.getMan(ManRunning.java:80)
at ManRunning.newGame(ManRunning.java:133)
at ManRunning.<init>(ManRunning.java:57)
at RunDevilRun.main(RunDevilRun.java:9)
答案 0 :(得分:3)
听起来你实际上正在使用局部变量man
阴影类成员man
。初始化时
Man[] man = new Man[1];
这声明了一个新变量。允许与类成员同名的局部变量,它们将隐藏(也称为阴影)类级别变量。因此,虽然看起来您正在初始化man
,但实际上您正在初始化本地数组而不是触及类中的数组。要初始化它而不是声明一个新的,你只想说:
man = new Man[1];