if / else条件在同一行上不起作用

时间:2011-11-13 04:34:12

标签: java return conditional-statements if-statement

为什么这不起作用?

if (condition) stuff; return;
else otherStuff;

或者

if (condition) stuff; return;
else {otherStuff;}

我可以轻松解决这个问题:

if (condition) {stuff; return;}
else otherStuff;

但我认为if语句阻止整行不包括退货。

3 个答案:

答案 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; 

会做你的事。

其他参考:Braces are your friend

答案 2 :(得分:1)

Java编译器将换行符视为任何其他空格。您不能通过将事物放在同一行来更改程序的语法。在前两个示例中,您似乎希望编译器将两个语句stuff; return;放入与if的{​​{1}}部分关联的单个复合语句中。这正是大括号(if/else)的用途。