Sudoku-循环扫描仪

时间:2018-11-04 15:57:28

标签: java eclipse loops sudoku

我目前正在使用Java制作Sudoku,但是我似乎无法弄清楚如何正确循环扫描仪。到目前为止,它的打印内容是:

. 1 . | 3 . . | 8 . . 
5 . 9 | 6 . . | 7 . . 
7 . 4 | . 9 5 | . 2 . 
----------------------
4 . . | . . . | 1 . . 
. 2 8 | . 7 1 | . 6 3 
. . . | 2 . 4 | 9 5 . 
----------------------
6 . 3 | . . 9 | . . 7 
. . . | 4 2 . | 5 1 6 
. 5 2 | . 8 . | . 4 . 
Next move, please (row , column , value )

而且我可以更改字符'。连我的代码,但我想正确循环。因此,如果数独仍然包含char'。',我希望它循环扫描程序以再次对其进行编辑。我对脚本还很陌生

这是我到目前为止编辑它的代码:

    public void moves(int row , int column , int value) {
        value += 48;
        if (list.get(row).charAt(column) == '.'){
            StringBuilder sb = new StringBuilder(list.get(row));
            sb.setCharAt(column, (char)value);
            list.set(row, sb.toString());
        }
    }

    public static void main(String[] args) throws Exception  {
        Sudoku s = new Sudoku("C:\\Users\\caspe\\Downloads\\Sudoku001.sdk");
        s.printBoard();
        s.errorCheck();

        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();
        s.moves(row, column, value);
        s.errorCheck();
        s.printBoard();
    }
}

因此,总而言之,我如何循环扫描仪,直到不再有点/'。'?

1 个答案:

答案 0 :(得分:3)

在您的代码中,定义一个称为int的{​​{1}}来跟踪剩余的点数。按照您的游戏逻辑,如果采取有效行动,您可以将numDots减少1。

为此,您可以将numDots更改为:

move

现在,您可以在public boolean moves(int row , int column , int value) { value += 48; if (list.get(row).charAt(column) == '.'){ StringBuilder sb = new StringBuilder(list.get(row)); sb.setCharAt(column, (char)value); list.set(row, sb.toString()); return true; } else { return false; } } 中进行以下操作:

main

要从Sudoku s = new Sudoku("C:\\Users\\caspe\\Downloads\\Sudoku001.sdk"); s.printBoard(); s.errorCheck(); int numDots = s.getNumDots(); Scanner scanner = new Scanner(System.in); while (numDots > 0) { System.out.println("Next move, please (row , column , value )"); int row = scanner.nextInt(); int column = scanner.nextInt() ; int value = scanner.nextInt(); if (s.moves(row, column, value)) { numDots--; s.errorCheck(); s.printBoard(); } } 中获取点数,请将以下方法添加到Sudoku类中:

Sudoku