我是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.
}
答案 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);