0

当我遇到一些我以前从未见过的语法时,我正在查看数独求解算法。

我感到困惑的是

    System.out.print(solution[i][j] == 0 ? " " : Integer.toString(solution[i][j]));

我不明白问号的含义或问号后面的任何内容。这条线是方法的一部分

    static void writeMatrix(int[][] solution) {
    for (int i = 0; i < 9; ++i) {
        if (i % 3 == 0)
            System.out.println(" -----------------------");
        for (int j = 0; j < 9; ++j) {
            if (j % 3 == 0)
                System.out.print("| ");
            System.out.print(solution[i][j] == 0 ? " " : Integer.toString(solution[i][j]));

            System.out.print(' ');
        }
        System.out.println("|");
    }
    System.out.println(" -----------------------");
}

我从http://www.colloquial.com/games/sudoku/java_sudoku.html得到了这段代码。任何解释将不胜感激!

4

4 回答 4

4

这是标准的三元运算符,存在于大多数语言中:C、C++、Java、Perl 等。

condition ? value_if_true : value_if_false
于 2013-02-24T04:59:18.673 回答
1
 System.out.print(solution[i][j] == 0 ? " " : Integer.toString(solution[i][j])); 

等同于

    if(solution[i][j] == 0){
        System.out.print(" ");
    }
    else{
        System.out.print(Integer.toString(solution[i][j]));
    }

它基本上是编写 if/else 语句的内联方式。

于 2013-02-24T05:04:20.587 回答
0

基本上是一个 if 语句。" "如果不是solution[i][j] == 0,它将打印出来Integer.toString(solution[i][j])

于 2013-02-24T04:59:11.083 回答
0

基本上说如果该值为 0,则打印“”,如果不是,则打印该数组存储的任何内容的字符串表示形式。

于 2013-02-24T04:59:21.483 回答