【问题标题】:Java Ternary Operator insert != null check and syso not printedJava 三元运算符 insert != null 检查和 syso 未打印
【发布时间】:2014-07-28 14:28:46
【问题描述】:

我有两个问题。 首先

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

我收到此错误:类型不匹配:无法从字符串转换为布尔值
Eclipse 告诉我
1 个快速修复可用: 插入 != 空检查

第二

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

使用 != null 检查我没有收到任何错误,但没有打印“\nint i is”,只有结果 i==0。我完全不明白这些错误。请帮忙=)

【问题讨论】:

标签: java operator-keyword ternary


【解决方案1】:

您需要正确地为您的条件表达式加上括号:

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 表达式,它产生一个字符串,触发“need a Boolean”错误。

【讨论】:

  • 我现在明白了! =)
猜你喜欢
  • 2017-01-18
  • 1970-01-01
  • 2021-06-01
  • 2012-11-21
  • 1970-01-01
  • 2014-02-08
  • 2011-03-12
  • 2020-12-26
相关资源
最近更新 更多