为什么我的if else语句(即?:)不起作用?

时间:2016-03-18 23:21:35

标签: java if-statement

我是Java新手,正在尝试学习缺少if-else语句的概念。

我想出了下面的代码。但是,代码不会编译并在if-else(即?:)语句旁边显示错误。

有人可以告诉我为什么它不起作用?

很抱歉,如果我的问题听起来很愚蠢。我是Java的新手。

提前感谢您的帮助!

List<String> ls1 = new LinkedList<>(Arrays.asList("hello", "world", "morning", "world"));
Map<String, Integer> msi1 = new LinkedHashMap<>();

for(String s1 : ls1){
    Integer i1 = msi1.get(s1);
    i1 == null ? msi1.put(s1, i1) : msi1.put(s1, i1 + 1));//why can't I use the short if-else statement like this.
}

2 个答案:

答案 0 :(得分:10)

三元表达

condition ? when-true : when-false

表达式,而不是语句,因此不能在需要语句的地方使用。

您可以将其写为:

msi1.put(s1, (i1 == null) ? i1 : i1 + 1);

因为这是一个声明。

答案 1 :(得分:0)

我不确定你要做什么。如果你试图用它的键识别地图中某个值的出现次数,那么这就是你应该做的事情

基本上删除提取物&#39;)&#39;到最后,你应该总是分配三元运算符的输出。

Integer test = i1 == null ? msi1.put(s1,1) : msi1.put(s1, i1 + 1);