没有花括号的 If-Else 控制流
If-Else Control Flow without curly braces
我正在尝试 运行 以下带有 x =10
的代码。"X is not equal to 10!"
正在打印。但是根据文档,else
属于最里面的 if()?
此外,如果我们将 if 块中的 "1==2"
替换为 1==1
,那么 "X is not equal to 10!"
也会被打印。
我已经更正了代码..
编辑:得到答案。
if(1==2)
if(x!=10)
System.out.println("X is equal to "+x);
else
System.out.println("X is not equal to 10!");
正确缩进才能看到
if(1==2)
System.out.println(x);
if(x!=10)
System.out.println("X is equal to "+x);
else
System.out.println("X is not equal to 10!");
我想这已经回答了。
但更详细:
第一个 if
不正确,第一个 println
没有执行(除了描述的第二个版本)。
第二个if
是无条件求值,不成立,else
被执行。
或者在引用中反映出来,没有 "inner" if
因为没有 if
包含任何其他 if
.
或者另一方面,您似乎认为输出的发生是因为第一个 if
的条件为假,即 else
附加到第一个 if
。但是,它附加到第二个 if
,因为受第一个 if
影响的条件代码在 ;
处结束。要让更多代码受到第一个 if
的影响,您可以引入几行代码块,其中包含一对 {}
.
您的控制结构缺少括号。这些对于包含您的逻辑范围很重要,否则除非您小心,否则您最终会得到不正确的逻辑。
public class flow {
public static void main(String[] args) {
int x = 10;
if(1==2)
System.out.println(x); <--- this is 'dead code' will not be reached
if(x!=10)
System.out.println("x is equal to " + x);
else
System.out.println("x is not equal to 10!");
}
}
此外,您的答案是在控制台中打印 'x is not qual to 10!',因为您的逻辑正在评估 'else' 子句。逻辑,if(x!=10) 打印等于 x,但如果它等于 10,则打印不等于 10。
请在您的代码中加入左花括号和右花括号:
if(1 == 2){
System.out.println(x);
if(x!=10){
System.out.println("X is equal to " + x);
} else {
System.out.println("X is not equal to 10!");
}
}
更多信息:Is it bad practice to use an if-statement without brackets?
我正在尝试 运行 以下带有 x =10
的代码。"X is not equal to 10!"
正在打印。但是根据文档,else
属于最里面的 if()?
此外,如果我们将 if 块中的 "1==2"
替换为 1==1
,那么 "X is not equal to 10!"
也会被打印。
我已经更正了代码..
编辑:得到答案。
if(1==2)
if(x!=10)
System.out.println("X is equal to "+x);
else
System.out.println("X is not equal to 10!");
正确缩进才能看到
if(1==2)
System.out.println(x);
if(x!=10)
System.out.println("X is equal to "+x);
else
System.out.println("X is not equal to 10!");
我想这已经回答了。
但更详细:
第一个 if
不正确,第一个 println
没有执行(除了描述的第二个版本)。
第二个if
是无条件求值,不成立,else
被执行。
或者在引用中反映出来,没有 "inner" if
因为没有 if
包含任何其他 if
.
或者另一方面,您似乎认为输出的发生是因为第一个 if
的条件为假,即 else
附加到第一个 if
。但是,它附加到第二个 if
,因为受第一个 if
影响的条件代码在 ;
处结束。要让更多代码受到第一个 if
的影响,您可以引入几行代码块,其中包含一对 {}
.
您的控制结构缺少括号。这些对于包含您的逻辑范围很重要,否则除非您小心,否则您最终会得到不正确的逻辑。
public class flow {
public static void main(String[] args) {
int x = 10;
if(1==2)
System.out.println(x); <--- this is 'dead code' will not be reached
if(x!=10)
System.out.println("x is equal to " + x);
else
System.out.println("x is not equal to 10!");
}
}
此外,您的答案是在控制台中打印 'x is not qual to 10!',因为您的逻辑正在评估 'else' 子句。逻辑,if(x!=10) 打印等于 x,但如果它等于 10,则打印不等于 10。
请在您的代码中加入左花括号和右花括号:
if(1 == 2){
System.out.println(x);
if(x!=10){
System.out.println("X is equal to " + x);
} else {
System.out.println("X is not equal to 10!");
}
}
更多信息:Is it bad practice to use an if-statement without brackets?