三元运算符给出“不是语句”错误

tec*_*ons 5 java

嗨,下面的语句会引发错误。它说“不是声明”

map.containsKey(1)? someObject.setFlag(true) : map.put(1,"hello");
Run Code Online (Sandbox Code Playgroud)

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

Ami*_*era 6

您将Ternary运算符用作statement,而不是assignment。在你的情况下,你应该使用if else

if(map.containsKey(1)) {
    someObject.setFlag(true)
}else{
    map.put(1,"hello");
}
Run Code Online (Sandbox Code Playgroud)

这是三元运算符的 java文档


Cod*_*ice 5

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

String result = map.containsKey(1) ? someObject.setFlag(true) : map.put(1,"hello");
Run Code Online (Sandbox Code Playgroud)

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

我认为您在这里仍然会遇到问题,因为setFlag()可能不会返回String. 此外,由于您正在创建副作用,因此您应该将其替换为if声明。