填充数组时出现NullPointerException

时间:2013-04-15 23:10:09

标签: java arrays nullpointerexception

这是一个关于NullPointerException的问题,我要做的是为我的“pieces”数组中的每个部分设置一个符号(方法setSymbol存在,并且是{{ 1}}值) 我知道默认情况下这是null,但是如果我的“set方法”不起作用,如何设置我的数组呢?

我的代码

尽可能简短
char

我得到了这个例外:

  

线程“main”中的异常java.lang.NullPointerException

2 个答案:

答案 0 :(得分:6)

Pieces[][] pzs = new Pieces[7][7]使一个7乘7的数组填充空值:

{{null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null},
 {null,null,null,null,null,null,null}}

你想要做的是:

Pieces[][] pzs = new Pieces[7][7];
//no need for int i, j
for(int i = 0; i < pzs.length; i++){     //pzs.length guarantees you won't get an 
    for(int j = 0; j < pzs[i].length; j++){ //ArrayIndexOutOfBoundsException even if pzs is something different
        pzs[i][j] = new Pieces();
        pzs[i][j].setSymbol('X')
    }
}

编辑:感谢Vulpix建议使用pzs.length

答案 1 :(得分:2)

您需要初始化每个Pieces。在内部for - 循环内添加一行:

pzs[i][j] = new Pieces();

此外,您的数组将超出范围,要么声明更多Pieces,要么切断两个for循环的迭代。