为什么这不起作用?
if (condition) stuff; return;
else otherStuff;
或者
if (condition) stuff; return;
else {otherStuff;}
我可以轻松解决这个问题:
if (condition) {stuff; return;}
else otherStuff;
但我认为if语句阻止整行不包括退货。
答案 0 :(得分:8)
因为:
if (condition) stuff; return;
else otherstuff;
if
条件语句只有一个语句stuff
。
之后是一个不相关的return
声明。
else
单独搁浅,这不是合法的Java。
分号是语句终结符,而不是EOL。为了使一个语句成为一个块,它必须被{}
包围,否则该语句将以;
结束。
答案 1 :(得分:2)
我想扩展上述答案 [Dave Newton]。
如果只有一个语句,则只能使用不带括号的语法。所以,这是有效的:
代码:
if (expression)
statement;
在上面,语句将被执行if expression==true.
在下面的代码中,它仍然可以工作,但不是你所期望的:
代码:
if (expression)
statement1; // only this is inside of the if
statemen2; // this is outside your if statement
statement2将在if语句的范围之外处理,该语句抛出if..else结构。只有statement1在if中。如果你想在if中执行多个语句,请使用括号(如上面提到的海报):
代码:
if (expression) {
statement1; // both of these will be executed if the expression is true
statement2;
}
很明显,
if (condition) {stuff; return;}
else otherStuff;
会做你的事。
答案 2 :(得分:1)
Java编译器将换行符视为任何其他空格。您不能通过将事物放在同一行来更改程序的语法。在前两个示例中,您似乎希望编译器将两个语句stuff; return;
放入与if
的{{1}}部分关联的单个复合语句中。这正是大括号(if/else
)的用途。