2016-08-12 3 views
0

Я использую ниже свободный текст, чтобы узнать интро к Java и у меня возникают проблемы понимания разницы между сегментами кода:управления Java, если другое заявление

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, х = 1; В Пример 2, х равен 2.

Справа, если -1 не> или = 0, то не должен быть выход 1? Может ли кто-нибудь объяснить, почему выход будет равен 2?

+0

слева; программа выполняет else block только в том случае, если условие ложно. так что не нужно объяснять, правильно ли это просто исполняемые строки в порядке. –

+0

Это очень простой вопрос, пожалуйста, закройте его. – Jordon

+4

@ShivaShinde: Что не так с основными вопросами? Все начинаются с основ. –

ответ

5

После второй, если оценивается заявление, 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, только одно из утверждений x = 1; или x = 2; будут выполняться, поскольку он использует if...else заявление.

В примере 2 оба оператора будут выполняться, потому что он использует два отдельных оператора if и потому, что оба условия являются истинными в момент их вычисления.

0

Во втором примере; сначала пройти через первый if условия:

x = -1; 

if (x < 0) x = 1; 

х меньше 0, так что х становится 1.

Когда вы идете на второй if условия:

if (x >= 0) x = 2; 

х является все еще 1 и 1 больше 0, поэтому x становится 2.

+0

@ NisseEngström Crap, извините. –

Смежные вопросы