Управляющие операторы

Задачи 11 — 20

Задача 11

Что выведет на консоль следующий код?

public static void main(String[] args) {


int x = 1;

int y = 5;


while (y-- > 0) {


x = y - x;


if (x > 1) {

System.out.print("more ");

} else {

System.out.print("less ");

}

}

}

а. Код что-то выведет но в итоге выпадет в ошибку во время выполнения.
б. Код выведет на консоль more more more less less
в. Код выведет на консоль more less more less less
г. Код выведет на консоль more less more less more

в. Код выведет на консоль more less more less less

Эта задача из серии "мозгодробилок", но в реальности она не самая сложная в своём роде.

Во-первых, код абсолютно валиден и отработает без ошибок.

Во-вторых, внутри цикла while не происходит изменения значения переменной y. Из чего следует, что цикл выполнится ровно 5 раз и на каждой итерации значение переменной y будет просто на единицу меньше, чем на предыдущей.

В-третьих, остаётся самое "мозгодробительное" — отследить значение переменной x. Что, на самом деле, также не сложно, если под рукой есть ручка и листочек. На первой итерации x будет равен 3, затем 0, 2, -1 и 1.

На последней итерации важно не ошибиться. Условие не выполнится, так как, чтобы было напечатано more икс должен оказаться больше единицы, а не равен ей.