数独:将空值显示为空格

时间:2016-01-23 13:12:53

标签: java int whitespace sudoku

我是java编程的新手,并创建了一个基于控制台的数独游戏作为练习。回溯算法生成完整的数独游戏,另一种方法是“挖洞”到随机单元格(关于难度)。现在,为空白单元格设置了值0,但我不喜欢Sudoku看起来的方式..董事会中的数字太多,我认为空白将是一个不错的选择。然后,玩家应该能够用他自己的猜测替换单元格中的(现在为'0',后来的空格)。 有没有办法在0时替换int值?算法和digHole方法都在2D数组(坐标)上使用setValue方法。

感谢您的帮助!

这是我的电路板图:

public static void drawBoard() {
    String[] abc = { "A", "B", "C", "D", "E", "F", "G", "H", "I" };
    // i := rows
    for (int i = 0; i <= 8; i++) {
        // first row
        if (i == 0) {
            System.out.println("");
            // coordinates 1-9
            System.out.println("       1   2   3   4   5   6   7   8   9\n" + "     _____________________________________ \n"
                            + "    |                                     |");
        }
        // j := columns in row i
        for (int j = 0; j <= 8; j++) {
            if (j == 0) {
                // coordinates A-I and first column
                System.out.print(" " + abc[i] + "  |  " + sudokuCells[i][j].getValue() + "  ");
            } else if (j == 8) {
                // last cell in current row
                System.out.print(" " + sudokuCells[i][j].getValue() + "  |");
                System.out.println("");
            } else if (j == 2 || j == 5) {
                //frame
                System.out.print(" " + sudokuCells[i][j].getValue() + " |");
            } else {
                //whitespace as seperation
                System.out.print(" " + sudokuCells[i][j].getValue() + "  ");
            }
        }
        // last row with frame
        if (i == 8) {
            System.out.println("    |_____________________________________|");
            System.out.println();
        }

2 个答案:

答案 0 :(得分:-1)

为什么不把它设置为:

" "

这应该可以解决问题,也可以发布你的代码示例?

答案 1 :(得分:-1)

我建议保持现在的逻辑表示(使用0),并在遇到0时打印一个空格,这样你只需要修改打印板的功能!

像这样的例子

for(int i = 0; i < board.length; i++)
{
   for(int j = 0 j < board.length; j++)
   {
      Cells curr = board[i][j];
      if(curr.getValue() == 0)
         System.out.print(" ");
      else
         System.out.print(curr.getValue())
   }
   System.out.println()
}