私は8個のクイーンズの問題を抱えており、クイーンズ間に衝突があるかどうかをチェックするメソッドを実装しようとしています。問題の論理については、理解していると思いますが、NullpointerExceptionが発生しています。理由を理解できません。どんな助けも高く評価されます。Java配列のNullPointerException - 8個のクイーン
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(matrix[i][j] == 1){
queens[i] = new Queen(i, j);
}
したがって、1つのスポット場合:あなたはqueens[]
にすべての場所でのクイーンを置いていなかったよう
if(queens[i].getX()==queens[j].getX() && Math.abs(queens[i].getX()-queens[j].getX())==Math.abs(queens[i].getY()-queens[j].getY()))
「ドット」操作の1つが「ヌル」を戻しています。このため、複雑な式の部分をローカル変数に割り当てることが必要な場合があります。これにより、例外が発生した場所をより正確に特定できます。 –
デバッガを使用します。 – mre