2014-11-22 3 views
0

У меня есть следующие вопросы, об этом Java Код:Java, Понимание

public static void main(String[] args) { 
    int A = 12, B = 24; 
    int x = A, y = B; 
    while (x > 0) { 
     y = y + 1; 
     x = x - 1; 
    } 
    System.out.println("the solution is " + y); 
} 
  1. Что неоспоримым вычисляется здесь? Мое решение таково, что это (12-1) + (24 + 1) = 36. Пожалуйста, поправьте меня, если это неправильно.

  2. Для чего A и B будет ошибка? Честно говоря, я хоть об А = 1 и меньше, но это не сработало ... может кто-то мне помочь?

  3. Если есть ошибка, что такое считывание? Я не мог ответить на это, пытаясь получить ошибку (например, установить A = -24), я просто не получил ошибку, а другое решение.

ответ

0

Давайте проверим этот бит кода:

while (x > 0) { 
     y = y + 1; 
     x = x - 1; 
    } 
    System.out.println("the solution is " + y); 

Это цикл. A while loop, если быть точным.

Цикл будет продолжать итерации, пока условие цикла не ложных

В этом случае вы имеете х = 12 и Y = 24. Так как х значение положительное, поэтому он войдет в петлю , и продолжить вычисление для каждой итерации.

Вот результаты вы получите для каждой итерации:

  • х = 11, у = 25
  • х = 10, у = 26
  • х = 9, у = 27
  • х = 8, у = 28
  • х = 7, у = 29
  • х = 6, у = 30
  • х = 5, у = 31
  • х = 4, у = 32
  • х = 3, у = 33
  • х = 2, у = 34
  • х = 1, у = 35
  • х = 0, у = 36

Когда вы получаете x = 0 и y = 36, остановки цикла, потому что x = 0 и нарушает условие. Поэтому вы выходите из цикла. Последнее значение y - 36. Это то, что вы получаете в себе println(); это не x + y, это y в порядке.

Но когда x = -12, или x=-24 или любое другое отрицательное число, условие while является ложным. Ваш println() находится за пределами цикла, поэтому он отображает значение y, которое находится за пределами цикла, то есть 24.

Ошибка при условии, что вы являетесь ложным. Даже если вы внесете println()x или y, вы не получите никакого результата, но также не получите никакой ошибки.

+0

Благодарим вас за подробный ответ. Я знаю (уже), что это неправильно, об этом здесь говорилось в другом ответе. Но если A = 12 и B = 24, решение равно 36, потому что оно: A * 1 + B (?) Ну, вот что я его компилирую. Если x> 0 ложно, то решение всегда будет только Y (B = 24). Если это правда, компилятор дает мне другие результаты, которые всегда являются A + B в этом случае? –

+0

Проверьте мой отредактированный ответ. Надеюсь, это устранит всю путаницу. Раньше я был не прав. Я исправил это. –

2
  1. Приращение y, x раз
  2. Там не будет никаких ошибок для любого A и B. В «худшем» случае, цикл не будет выполнен и начальное значение y будет печататься
  3. нерелевантные

Я не понимаю, ваше название, не имеет ничего общего с String[] args здесь.

Я не уверен, что это цель этого кода, даже в учебных целях ..

+0

Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/65450/discussion-on-answer-by-maroun-maroun-java-understanding). –

0
  1. сумма A и B

  2. < когда А 0 сумма не рассчитывается правильно

  3. считывания представляет собой в, когда имеется ошибка

+1

* Возможно, возникнут ошибки, если вы назначаете не числовые значения * осторожно с термином * error *. Вы должны объяснить разницу между ошибкой * компилятора *, что означает, что код даже не компилируется, поэтому его невозможно выполнить; и «RuntimeException», которое ** не является ошибкой **, но означает, что код компилируется отлично, и есть проблема в коде при его выполнении (опять же, проблема, а не ошибка). –

+0

@LuiggiMendoza, спасибо. Но я думаю, что ответ - это нечто другое, и я его отредактировал. –