big*_*ghi 3 java ternary-operator
我有下面的代码生成此输出(-1后没有空格)==>"1 3 -14 -15 -1"
int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE};
for (int dist : arr) {
System.out.print((dist == Integer.MAX_VALUE) ? -1 : dist + " ");
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我分别评估三元表达式(如下所示),它将给出不同的输出(我所期望的)==> "1 3 -1 4 -1 5 -1"
int [] arr = {1, 3, Integer.MAX_VALUE, 4, Integer.MAX_VALUE, 5, Integer.MAX_VALUE};
for (int dist : arr) {
int finalDist = (dist == Integer.MAX_VALUE) ? -1 : dist;
System.out.print(finalDist + " ");
}
Run Code Online (Sandbox Code Playgroud)
第一个代码段出了什么问题?
这里
(dist == Integer.MAX_VALUE) ? -1 : dist + " "
Run Code Online (Sandbox Code Playgroud)
仅当条件为时才添加空格false。您应该" "始终使用括号添加如下所示的内容。
((dist == Integer.MAX_VALUE) ? -1 : dist) + " "
Run Code Online (Sandbox Code Playgroud)
三元运算符只有运算符优先于赋值运算符。(见下文)
下表中的运算符按优先顺序列出。运算符越靠近表格顶部,其优先级越高。
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |