Java三元运算符插入!= null检查并且未打印syso

时间:2014-06-07 11:36:07

标签: java operator-keyword ternary

我有两个问题。 第一

int i = 0;
System.out.println("\nint i is" + (i == 0) ? "i==0" : "i!=0");

我收到此错误:类型不匹配:无法从String转换为布尔值 Eclipse告诉我
1快速解决方案: 插入!= null检查

第二

System.out.println("\nint i is" + (i == 0) != null ? "i==0" : "i!=0");

使用!= null检查我没有错误,但是" \ nint我是"没有打印,只有结果i == 0。我完全不理解错误。请帮忙=)

1 个答案:

答案 0 :(得分:2)

您需要正确地为条件表达式括起句子:

System.out.println("\nint i is" + ((i == 0) ? "i==0" : "i!=0"));

否则,在应用条件之前执行+,因此条件解析如下:

"\nint i is" + (i == 0) ? "i==0" : "i!=0"
-----------------------   ------   ------
             |              |         |
Condition ---+              |         |
When the condition is true -+         |
When the condition is false ----------+

"\nint i is" + (i == 0)是一个有效的Java表达式,它产生一个字符串,触发“需要一个布尔”错误。