如果布尔值==假,则重新启动while循环

时间:2018-11-05 16:12:11

标签: java while-loop boolean

我试图通过做数独难题来提高Java的水平,但是我遇到了一些问题。按照目前的情况,如果我在Sudoku中输入任何“非法”输入,它将继续,但是我试图让脚本再次要求输入一个值,如果它是“非法”。如下面的代码所示,这是当我的公共布尔“动作”为false时,我试图再次启动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 个答案:

答案 0 :(得分:3)

无论s.move是true还是false,您编写代码的方式都将打印Sudoku面板。您可以通过在else语句中添加else语句来解决此问题。

例如:

if(s.moves(row, column, value) == false){
    //print error message
}else {
    s.printBoard();
}