三元运算符给出“ Not a statement”错误

时间:2018-07-05 17:35:58

标签: java

嗨,下面的语句抛出error。它说“不是声明”

map.containsKey(1)? someObject.setFlag(true) : map.put(1,"hello");

是否需要将返回的值存储在语句左侧的某个变量中?

2 个答案:

答案 0 :(得分:4)

您将Ternary运算符用作statement,而不是assignment。您应使用if else

if(map.containsKey(1)) {
    someObject.setFlag(true)
}else{
    map.put(1,"hello");
}

这里是三元运算符的Java docs

答案 1 :(得分:2)

三元运算符是表达式,而不是语句。它通常用于根据某些条件设置变量的值。在这种情况下,您需要将结果分配给变量,以使其成为语句:

String result = map.containsKey(1) ? someObject.setFlag(true) : map.put(1,"hello");

(注意:您应该选择一个更好的变量名。)

我认为您在这里仍然会遇到问题,因为setFlag()可能不会返回String。另外,由于您正在创建副作用,因此应使用if语句代替它。