我在JavaNotes书中遇到了下面的代码示例。答案是执行后x等于2.
我的问题是这究竟是如何运作的?
我看到它不是if-else流,但是在第二个“if”中boolean
表达式为false,因此X不会获得值2。
这是怎么回事?
int x;
x = -1;
if (x < 0)
x = 1;
if (x >= 0)
x = 2;
答案 0 :(得分:5)
试试animal-sniffer-maven-plugin!阅读代码中的注释,以便了解代码的工作方式:
int x;
x = -1;
if (x < 0) { //-1 < 0 = true
x = 1; //enter here -> change x = 1
}//end of the first if
if (x >= 0) {//1 >= 0 = true
x = 2; //enter here -> change x = 2
}//end of the second if
System.out.println(x);//result is 2
如果您期望x = 1
,那么您的代码应如下所示:
if (x < 0) { //-1 < 0
x = 1; //enter here -> change x = 1
} else if (x >= 0) {//1 >= 0
//^^^^------------------------------------------note the else
x = 2; //enter here -> change x = 2
}
答案 1 :(得分:1)
x = -1; 首先如果:x&lt; 0是真的, 所以x获得新值1
第二个if:x&gt; 0是真的 所以x获得新值2 x = 2;