对于行`msi1.put(s,i == null?i = 1:i + = 1);`,NetBeans抱怨它期望变量但是得到了一个值

时间:2016-03-18 01:28:40

标签: java list dictionary hashmap

我试图在HashMap中存储不同的单词并计算它出现的时间。以下是我提出的代码。但是,IDE抱怨对于行msi1.put(s, i == null ? i = 1 : i += 1);,它期望变量但是得到一个值。它没有提供任何其他信息。有人可以帮我一把吗?在此先感谢您的帮助!

Map<String, Integer> msi1 = new HashMap<>();

List<String> ls1 = new ArrayList<>(Arrays.asList("hello", "world", "america", "world"));

for(String s : ls1){
    Integer i = msi1.get(s);
    msi1.put(s, i == null ? i = 1 : i += 1);
}

System.out.println(msi1.size() + "distinct words");
System.out.println(msi1);

1 个答案:

答案 0 :(得分:0)

您不能将语句放在三元表达式中,只能表达式。您可能想要使用它:

msi1.put(s, i == null ? 1 : i + 1);