Перезапустите цикл while, если boolean == false
Я пытаюсь стать лучше в Java, создавая головоломку судоку, но я сталкиваюсь с некоторыми проблемами. В настоящее время, если я добавлю "Судебный" ввод в "Судоку", он просто продолжится, но я пытаюсь заставить скрипт снова запросить значение, если оно "незаконно". Как видно ниже в коде, это когда мои публичные логические "движения" ложны, я пытаюсь запустить цикл while еще раз.
public static void main(String[] args) throws Exception {
Sudoku s = new Sudoku("C:\\Users\\caspe\\Downloads\\Sudoku001.sdk");
s.printBoard();
s.errorCheck();
s.getNum();
while(getNum() > 0) {
System.out.println("Next move, please (row , column , value )");
Scanner scanner = new Scanner(System.in);
int row = scanner.nextInt();
int column = scanner.nextInt() ;
int value = scanner.nextInt();
if (s.moves(row, column, value) == false); {
//Try again
}
s.printBoard();
}
}
Я все еще не могу найти решение после нескольких разных попыток, поэтому помощь очень ценится!
Это мой метод getNum для дальнейшего понимания:
public static int getNum() {
int getNumb = 0;
for(int j = 0; j < list.size(); j++) {
for (int i=0; i < list.get(j).length(); i++) {
if(list.get(i).charAt(j) == '.') {
getNumb++;
}
}
}
return getNumb;
}
1 ответ
Решение
То, как вы написали свой код, будет напечатано на доске Судоку, независимо от того, является ли s.move истинным или ложным. Вы можете исправить это, добавив оператор else к своему оператору if.
Например:
if(s.moves(row, column, value) == false){
//print error message
}else {
s.printBoard();
}