0

宣布:

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]);

工作得很好。

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)
4

2 回答 2

1

线 (1)

Man[] man = new Man[1];

隐藏在这一行中声明的实例变量 (2)

private Man[] man;

任何体面的 IDE 都会对此显示警告。

这里是你应该如何在第 (2) 行声明的第 (1) 行中初始化数组 man

man = new Man[1];
于 2013-03-03T03:46:02.443 回答
0

显然,您有两个man数组变量,一个已初始化,一个(成员变量)未初始化。

于 2013-03-03T03:38:51.927 回答