когда я отбрасываю число в строке, столбце или квадрате, оно помещается в первый раз, что не должно, а во второй раз оно работает хорошо, но цикл останавливается, и это мой код
import java.util.*;
public class Solution {
public static boolean isValidSudoku(char[][] board) {
short[] rows = new short[9];
short[] cols = new short[9];
short[] squares = new short[9];
for(int row = 0; row < board.length; row++) {
for(int col = 0; col < board[0].length; col++) {
if(board[row][col] == '0') continue;
short value = (short) (1 << (board[row][col] - '1'));
if((value & rows[row]) > 0) return false;
if((value & cols[col]) > 0) return false;
if((value & squares[3*(row/3) + col/3]) > 0) return false;
rows[row] |= value;
cols[col] |= value;
squares[3*(row/3) + col/3] |= value;
}
}
return true;
}
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
char [][] board = new char[][] {
{ '1', '2', '3', '4', '9', '7', '8', '6', '5' },
{ '4', '5', '9', '0', '0', '0', '0', '0', '0'},
{ '6', '7', '8', '0', '0', '0', '0','0', '0' },
{ '3', '0', '0', '0', '1', '0', '0', '0', '0' },
{ '2', '0', '0', '0', '0', '0', '0', '0', '0' },
{ '9', '0', '0', '0', '0', '5', '0', '0', '0' },
{ '8', '0', '0', '0','0', '0', '0', '0', '0' },
{ '7', '0', '0', '0', '0', '0', '0', '0', '0' },
{ '5', '0', '0', '9', '0', '0', '0', '0', '0' }
};
int rows, column = 0;
char Ch1;
String seat;
int taken = 0 ;
do {
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
System.out.print(board[i][j] + " ");
}
System.out.println();
}
seat = kb.next();
rows = Integer.parseInt(seat.substring(0,1)) ;
column =Integer.parseInt(seat.substring(1,2)) ;
Ch1 = seat.charAt(2);
if (board[rows-1][column-1] != '0' ) {
System.out.println("is full");
continue;
}
if (isValidSudoku(board) == false) {
System.out.println(isValidSudoku(board));
continue;
}
board[rows - 1][column-1] = Ch1 ;
taken++;
} while (taken == 57);
}
}