用Java打印数独矩阵-如何获得正确格式的输出

用Java打印数独矩阵-如何获得正确格式的输出,java,Java,这可能是一个非常简单的问题,哦,我的上帝,这太令人震惊了!问题,但给出一个数独矩阵,使用如下代码: sudoku = new int[9][9]; public void printBoard() { for (int i=0; i<9; i++){ for (int j=0; j<9; j++){ if (sudoku[i][j] == 0) System.out.print(". "); if (sudoku[i][j] ==

这可能是一个非常简单的问题,哦,我的上帝,这太令人震惊了!问题,但给出一个数独矩阵,使用如下代码:

sudoku = new int[9][9];

public void printBoard() 
{
   for (int i=0; i<9; i++){
       for (int j=0; j<9; j++){
       if (sudoku[i][j] == 0) System.out.print(". "); 
       if (sudoku[i][j] == 1) System.out.print("1 ");
               if (sudoku[i][j] == 2) System.out.print("2 ");
               if (sudoku[i][j] == 3) System.out.print("3 ");
               if (sudoku[i][j] == 4) System.out.print("4 ");
               if (sudoku[i][j] == 5) System.out.print("5 ");
               if (sudoku[i][j] == 6) System.out.print("6 ");
               if (sudoku[i][j] == 7) System.out.print("7 ");
               if (sudoku[i][j] == 8) System.out.print("8 ");
               if (sudoku[i][j] == 9) System.out.print("9 ");
       }
       System.out.println(" ");
   }

正如我所说,我知道我缺少了几行代码来实现这一点,但我非常感谢任何帮助!谢谢

由于数组中的元素默认值为0,因此您将获得很多点数。因此,由于以下情况:

if (sudoku[i][j] == 0) System.out.print(". ");
你只会得到分数

编辑:要以所需格式打印,可以尝试检查i和j值是否为3的倍数:

for (int i = 0; i < 9; i++) {
    if (i % 3 == 0 && i != 0) // not first iteration
        System.out.println(); // print extra new-line each 3 iterations

    for (int j = 0; j < 9; j++) {
        if (j % 3 == 0) 
            System.out.print(" "); // to print spaces between columns

        if (sudoku[i][j] == 0) {
            System.out.print(". ");
            continue; // since it's 0, continue with next iteration
        }
        ... // here print values
    }
    System.out.println();
}

这是您需要做的:

package hts;


public class HTS {

static int[][] sudoku = new int[9][9];

public static void printBoard() {
    for (int i = 0; i < 9; i++) {
            System.out.print("\n");
            if(i%3==0)
                System.out.print("\n");
        for (int j = 0; j < 9; j++) {
            if (j % 3 == 0)
                System.out.print(" ");
            if (sudoku[i][j] == 0)
                System.out.print(". ");
            if (sudoku[i][j] == 1)
                System.out.print("1 ");
            if (sudoku[i][j] == 2)
                System.out.print("2 ");
            if (sudoku[i][j] == 3)
                System.out.print("3 ");
            if (sudoku[i][j] == 4)
                System.out.print("4 ");
            if (sudoku[i][j] == 5)
                System.out.print("5 ");
            if (sudoku[i][j] == 6)
                System.out.print("6 ");
            if (sudoku[i][j] == 7)
                System.out.print("7 ");
            if (sudoku[i][j] == 8)
                System.out.print("8 ");
            if (sudoku[i][j] == 9)
                System.out.print("9 ");
        }
    }
}

public static void main(String[] args) {
    printBoard();
}

}

它现在打印什么?是否在任意点向数组分配整数?数组为空lol@RobertoNicbaAnićBanić这就是我所想的我知道它是空的,我只是先处理输出我不认为他关心打印的值,只关心输出的格式;System.out.printf%s,val==0?':瓦尔;如果你想避免很多If语句,你真的应该编辑你的第一个答案,而不是编写一个全新的答案
 . . .  . . .  . . . 
 . . .  . . .  . . . 
 . . .  . . .  . . . 

 . . .  . . .  . . . 
 . . .  . . .  . . . 
 . . .  . . .  . . . 

 . . .  . . .  . . . 
 . . .  . . .  . . . 
 . . .  . . .  . . . 
package hts;


public class HTS {

static int[][] sudoku = new int[9][9];

public static void printBoard() {
    for (int i = 0; i < 9; i++) {
            System.out.print("\n");
            if(i%3==0)
                System.out.print("\n");
        for (int j = 0; j < 9; j++) {
            if (j % 3 == 0)
                System.out.print(" ");
            if (sudoku[i][j] == 0)
                System.out.print(". ");
            if (sudoku[i][j] == 1)
                System.out.print("1 ");
            if (sudoku[i][j] == 2)
                System.out.print("2 ");
            if (sudoku[i][j] == 3)
                System.out.print("3 ");
            if (sudoku[i][j] == 4)
                System.out.print("4 ");
            if (sudoku[i][j] == 5)
                System.out.print("5 ");
            if (sudoku[i][j] == 6)
                System.out.print("6 ");
            if (sudoku[i][j] == 7)
                System.out.print("7 ");
            if (sudoku[i][j] == 8)
                System.out.print("8 ");
            if (sudoku[i][j] == 9)
                System.out.print("9 ");
        }
    }
}

public static void main(String[] args) {
    printBoard();
}

}
. . .  . . .  . . . 
. . .  . . .  . . . 
. . .  . . .  . . . 

. . .  . . .  . . . 
. . .  . . .  . . . 
. . .  . . .  . . . 

. . .  . . .  . . . 
. . .  . . .  . . . 
. . .  . . .  . . .