当我遇到一些我以前从未见过的语法时,我正在查看一个Sudoku求解算法。
我感到困惑的是
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获得了此代码。任何解释都将不胜感激!
答案 0 :(得分:4)
这是标准ternary operator,它存在于大多数语言中:C,C ++,Java,Perl等。
condition ? value_if_true : value_if_false
答案 1 :(得分: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语句的内联方式。
答案 2 :(得分:0)
这基本上是一个if语句。如果" "
,则会打印出solution[i][j] == 0
,如果不是,则打印出Integer.toString(solution[i][j])
。
答案 3 :(得分:0)
基本上说如果该值为0,则打印“”,如果没有,则打印该数组存储的字符串表示。