用disjunction替换if语句

fre*_*low 3 java grammar boolean-logic short-circuiting

只是为了好玩,我试图取代:

if (set1.add(x) == false)
{
    set2.add(x);
}
Run Code Online (Sandbox Code Playgroud)

有:

set1.add(x) || set2.add(x);
Run Code Online (Sandbox Code Playgroud)

但是,Eclipse抱怨说:

Syntax error on token "||", invalid AssignmentOperator
The left-hand side of an assignment must be a variable
Run Code Online (Sandbox Code Playgroud)

任何人都可以对这些错误消息有所启发吗?他们对我没有多大意义.

Rei*_*Val 7

正如@qqilihq在评论中所说的那样做

boolean temp = set1.add(x) || set2.add(x);
Run Code Online (Sandbox Code Playgroud)

或更尴尬:

if(set1.add(x) || set2.add(x));
Run Code Online (Sandbox Code Playgroud)

  • +1 OMG,空的`if`是纯粹的邪恶:) (4认同)

Mus*_*enç 5

根据文档,可以以分号结尾的java语句是:

Assignment expressions
Any use of ++ or --
Method invocations
Object creation expressions
Run Code Online (Sandbox Code Playgroud)

你写的不是statement一个expression.在这里,您可以找到更多关于语句和表达式 这么简单但值得一看.