【发布时间】:2016-05-07 11:51:02
【问题描述】:
我正在做 8 个皇后问题,并尝试实现检查皇后之间是否有任何碰撞的方法。当谈到问题的逻辑时,我想我理解它,但是我得到 NullpointerException 并且我不知道为什么。任何帮助将不胜感激。
private static boolean isOK(int[][] matrix) {
boolean isInCollision = false;
Queen [] queens = new Queen[8];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
if(matrix[i][j] == 1){
queens[i] = new Queen(i, j);
}
}
}
for (int i = 0; i < queens.length; i++) {
for (int j = i+1; j < queens.length; j++) {
if(queens[i].getX()==queens[j].getX() && Math.abs(queens[i].getX()-queens[j].getX())==Math.abs(queens[i].getY()-queens[j].getY())){
isInCollision = true;
}
}
}
return isInCollision;
}
我在这行代码中遇到错误:
if(queens[i].getX()==queens[j].getX() && Math.abs(queens[i].getX()-queens[j].getX())==Math.abs(queens[i].getY()-queens[j].getY()))
【问题讨论】:
-
其中一个“点”操作返回
null。这就是您可能希望将复杂表达式的一部分分配给局部变量的原因。这将使您能够更好地确定异常发生的位置。
标签: java arrays nullpointerexception