Java 同一线路上的if/else条件不工作

Java 同一线路上的if/else条件不工作,java,return,conditional-statements,if-statement,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语句会阻止整行,而不排除return。因为: if (condition) stuff; return; else others

为什么这不起作用

if (condition) stuff; return;
else otherStuff;
还是这个

if (condition) stuff; return;
else {otherStuff;}
我可以通过以下方法轻松解决此问题:

if (condition) {stuff; return;}
else otherStuff;
但我认为if语句会阻止整行,而不排除return。

因为:

if (condition) stuff; return;
else otherstuff;
if
条件语句只有一条语句,
stuff

它后面是一个不相关的
return
语句

else
本身就处于停滞状态,这不是合法的Java

分号是语句终止符,而不是EOL。为了使语句成为块,它必须被
{}
包围,否则语句以
结尾

因为:

if (condition) stuff; return;
else otherstuff;
if
条件语句只有一条语句,
stuff

它后面是一个不相关的
return
语句

else
本身就处于停滞状态,这不是合法的Java


分号是语句终止符,而不是EOL。为了使语句成为块,它必须被
{}
包围,否则语句以
结尾

换行符被Java编译器视为任何其他空白。不能通过将内容放在同一行来更改程序的语法。在前两个示例中,您似乎希望编译器生成这两条语句
内容;返回
转换为与
if
部分的
if/else
关联的单个复合语句。这正是大括号(
{}
)的用途。

换行符被Java编译器视为任何其他空白。不能通过将内容放在同一行来更改程序的语法。在前两个示例中,您似乎希望编译器生成这两条语句
内容;返回
转换为与
if
部分的
if/else
关联的单个复合语句。这正是大括号(
{}
)的用意。

我想对上面的答案进行扩展

如果只有一条语句,则只能使用不带括号的语法。因此,这是有效的:

代码:

在上面,如果表达式==true,则执行语句。

在下面的代码中,它仍然可以工作,但不是您所期望的:

代码:

语句2将在if语句的作用域之外处理,该语句将抛出if..else构造。if中只有语句1。如果您希望在If中执行多条语句,请使用括号(如上海报所述):

代码:

很明显

if (condition) {stuff; return;}
else otherStuff; 
我会做你的事


其他参考资料:

我想进一步阐述上述答案

如果只有一条语句,则只能使用不带括号的语法。因此,这是有效的:

代码:

在上面,如果表达式==true,则执行语句。

在下面的代码中,它仍然可以工作,但不是您所期望的:

代码:

语句2将在if语句的作用域之外处理,该语句将抛出if..else构造。if中只有语句1。如果您希望在If中执行多条语句,请使用括号(如上海报所述):

代码:

很明显

if (condition) {stuff; return;}
else otherStuff; 
我会做你的事


其他参考:

no,块一直到第一个分号。no,块一直到第一个分号。实际上,
if
子句在所有情况下只接受一条语句。但是,该语句可以是一个复合语句(从技术上讲仍然是一条语句),它是通过将一系列语句括在大括号中形成的。实际上,
if
子句在所有情况下都只接受一条语句。但是,该语句可以是一个复合语句(技术上仍然是一个语句),它是通过将一系列语句括在大括号中形成的。
if (condition) {stuff; return;}
else otherStuff;