2016-08-12 140 views
0

我使用下面的自由文本学介绍到Java,我无法理解的代码段之间的区别:Java控件如果else语句

http://math.hws.edu/eck/cs124/downloads/javanotes7-linked.pdf

例1

int x; 
    x = -1; 
    if (x < 0) 
     x = 1; 
    else 
     x = 2; 

实施例2

int x; 
    x = -1; 
    if (x < 0) 
     x = 1; 
    if (x >= 0) 
     x = 2; 

实施例1,x是1;在示例2中,x是2.

在右侧,如果-1不是>或= 0,那么输出不应该是1?有人可以解释为什么输出会改为2吗?

+0

在左侧;程序只有在条件为假时才会执行阻塞。所以不需要按顺序解释正确的执行线。 –

+0

这是一个非常基本的问题,请关闭它。 – Jordon

+4

@ShivaShinde:基本问题到底怎么了?每个人都从基础开始。 –

回答

5

一旦第二if语句进行评估,x第一已经生效 - 这样的x值是现在1

if (x < 0) 
    x = 1; 


if (x >= 0) //x is 1 because you've already evaluated the above! 
    x = 2; 

else关键字创建互斥分支:只能有一个被执行。所以,如果你有这样的行为会如你预期:

if (x < 0) 
    x = 1; 
else if (x >= 0) 
    x = 2; 
+0

这个答案是正确的@TheJuniorProgrammer ...第二个例子包含两个if语句 –

2

在例1中,不仅是因为它使用的是if...else声明x = 1;x = 2;将执行的语句之一。

在示例2中,两个语句都将被执行,因为它使用两个单独的if语句,并且两个条件在评估时都是真实的。

0

在第二个例子中,第一你通过第一if条件:

x = -1; 

if (x < 0) x = 1; 

x小于0,因此x变成1.

当转到第二if条件:

if (x >= 0) x = 2; 

x为仍然是 1,并且1大于0,所以x变为2.

+0

@NisseEngström废话,抱歉,错! –