我正在尝试使用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!");
答案 0 :(得分:2)
正确缩进以查看
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
。
或者将其反映在报价上,因为没有if
包含任何其他if
,所以没有“内部” if
。
或者另一方面,您似乎认为发生输出是因为第一个if
条件为假,即else
附加到第一个if
。但是,它被附加到第二个if
,因为受第一个if
影响的条件代码在;
处结束。要使更多代码受第一个if
的影响,您可以引入一个由几行组成的块,并带有一对{}
。
答案 1 :(得分:0)
您的控制结构缺少括号。这些对于封闭逻辑范围很重要,否则除非您小心,否则最终会得到错误的逻辑。
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不等于10!在控制台中,因为您的逻辑正在评估“ else”子句。逻辑上,if(x!= 10)print等于x,但是如果等于10,则print不等于10。
答案 2 :(得分:-1)
请在您的代码上加上大括号:
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?