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] == 0Integer.toString(solution[i][j])

于 2013-02-24T04:59:11.083 に答える
0

基本的に、その値が 0 の場合は " " を出力し、そうでない場合はその配列が格納している文字列表現を出力します。

于 2013-02-24T04:59:21.483 に答える