为什么要使用java中for循环中的运算符被标记为no a语句?

6qqygrtg  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(234)
import java.util.HashMap;

public class Solution549_LongestHarmony {

    public int findLHS(int[] nums) {
        int longest = 0;
        HashMap<Integer, Integer> map = new HashMap<>();
        //fill the map
        for (Integer i : nums) {
            map.containsKey(i) ? map.replace(i, map.get(i) + 1) : map.put(i, 1);
        }

        for (Integer i : nums) {
            if (map.containsKey(i + 1)) {
                longest = Math.max(longest, map.get(i) + map.get(i + 1));
            }
        }
        if (map != null) {
            map.remove(2);
        }
        return longest;

    }
}

错误信息:

Line 7: error: not a statement
            map.containsKey(i) ? map.replace(i, map.get(i)+1):map.put(i,1);
wlsrxk51

wlsrxk511#

正如@pm 77-1所指出的,错误消息清楚地表明

a ? b : c

不是一个语句,而是一个表达式。您需要使用表达式值的赋值或方法调用才能使语句成功编译。

someVar = a ? b : c;
someMethod(a ? b : c);

因此,您可以使用如下语句填充Map

map.put(i, map.containsKey(i) ? map.get(i) + 1 : 1);

相关问题