Инкремент и декремент (++, --)

Тренажер по Java для пользователей с начальным уровнем подготовки.

Тренажер по Java

Операторы инкремента и декремента в Java — это короткая запись для изменения целочисленной переменной на 1: ++ и --. Они бывают префиксные (++x, --x) и постфиксные (x++, x--), и отличаются тем, когда именно возвращается значение — до или после изменения. Эти операторы часто встречаются в циклах и счётчиках, а в задачах важно не путать порядок вычисления в выражениях. В тренажере Java онлайн будут задания, тесты и примеры с визуализацией кода: как работает код с ++/--, что выводит программа и где типичные ошибки.

Пример: int a = 3; int b = a++; // b=3, a=4

Список тем

1. Вставьте ++ и -- в нужные места

id: 40442_incdec_01_replace_tokens

Вставьте операторы инкремента (++) и декремента (--) в нужные места, чтобы код демонстрировал разницу между префиксной и постфиксной формами. Переменные x и y инициализированы значениями 3 и 7 соответственно. В результате выполнения программы должны быть выведены промежуточные значения, полученные разными способами, а финальные значения x и y должны стать одинаковыми (равными 5). Обратите внимание на комментарии в коде, которые указывают, когда нужно изменить значение переменной: до использования (префиксная форма) или после использования (постфиксная форма).

Заполните пропуски
int x = 3;
int y = 7;

int a = input1S; // Увеличьте x, затем присвойте значение a
int b = input2S; // Присвойте значение y в b, затем уменьшите y
int c = input3S; // Присвойте значение x в c, затем увеличьте x
int d = input4S; // Уменьшите y, затем присвойте значение d

System.out.println(a + "," + b + "," + c + "," + d);
System.out.println("x=" + x + ", y=" + y);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Выберите префикс или постфикс

id: 40442_incdec_02_select_fill_prefix_postfix

В коде с пропусками нужно выбрать подходящие операторы инкремента и декремента из выпадающих списков, чтобы получить указанный результат. Обратите внимание на комментарии: в некоторых случаях нужно изменить значение переменной до использования (префиксная форма), а в других — после (постфиксная форма). Проанализируйте, какое значение должно быть присвоено в каждую переменную и каким должно стать финальное значение x и y.

Нужно правильно расставить в пропуски предложенные варианты
int x = 5;
int y = 8;

int a = input1S; // Префиксный инкремент x
int b = input2S; // Постфиксный инкремент x
int c = input3S; // Префиксный декремент y
int d = input4S; // Постфиксный декремент y

System.out.println(a + "," + b + "," + c + "," + d);
System.out.println("x=" + x + ", y=" + y);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Исправьте ошибку в использовании ++/--

id: 40442_incdec_03_error_wrong_form

В приведённом фрагменте Java-кода допущена ошибка в использовании оператора инкремента. Найдите строку, где оператор применён некорректно, и исправьте её так, чтобы код скомпилировался и работал правильно. Ошибка связана с применением ++ к недопустимому операнду.

Найдите ошибку и исправьте
public class Main {
    public static void main(String[] args) {
        int num = 5;
        int result = 5++;
        System.out.println(result);
    }
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Соберите код со счётчиком

id: 40442_incdec_04_build_from_parts_counter

В этом задании вам нужно собрать Java-программу, которая демонстрирует работу операторов инкремента. Программа объявляет целочисленную переменную, последовательно применяет к ней преинкремент и постинкремент, выводя значения после каждой операции. Одна из предложенных строк лишняя и в решение не входит.

Перетяните в правильном порядке строки из одного блока в другой
public class Main {
    public static void main(String[] args) {
        int i = 0;
        System.out.println(++i);
        System.out.println(i++);
        System.out.println(i);
    }
}
        System.out.println(--i);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Что выведет код с a++ и ++a

id: 40442_incdec_05_predict_result_quiz

Внимательно изучите приведённый фрагмент Java-кода, который демонстрирует различие между постфиксным и префиксным инкрементом. Проанализируйте порядок выполнения операций и выберите вариант, который точно соответствует выводу программы.

Выберите правильный вариант ответа
public class Main {
    public static void main(String[] args) {
        int a = 5;
        int b = a++;
        int c = ++a;
        System.out.println(a + " " + b + " " + c);
    }
}
Сообщения
Проверить
Показать подсказку

6. Сопоставьте форму оператора и эффект

id: 40442_incdec_06_compare_terms

В левой колонке приведены выражения с операторами инкремента и декремента Java, включая префиксную и постфиксную формы, а также примеры присваивания. В правой колонке — описания их эффектов: когда именно происходит изменение переменной и какое значение участвует в вычислениях. Сопоставьте каждое выражение с соответствующим описанием, перетаскивая элементы правой колонки.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
++x
x++
--x
x--
int y = x++;
int z = ++x;
Сначала используется текущее значение, потом переменная увеличивается на 1
Сначала переменная увеличивается на 1, потом используется новое значение
В выражении используется старое значение x, затем x увеличивается на 1
Сначала переменная уменьшается на 1, потом используется новое значение
Сначала x увеличивается на 1, затем в выражении используется новое значение
Сначала используется текущее значение, потом переменная уменьшается на 1
Сообщения
Проверить
Показать подсказку

7. Упорядочьте шаги выполнения выражения

id: 40442_incdec_07_sequencing_eval_order

Восстановите порядок вычисления выражения int a = 5; int b = ++a + a--;. Расставьте шаги так, как их выполняет Java. Следите за моментом изменения a и используемым значением.

Расставьте строки в правильном порядке
Выполнить постдекремент a-- → a = 5
Взять текущее значение a (6) для постдекремента
Присвоить результат 12 переменной b
Выполнить преинкремент ++a → a = 6
Сложить операнды: 6 + 6 = 12
Использовать новое значение a (6) как первый операнд
Взять текущее значение a (5)
Использовать старое значение a (6) как второй операнд
Сообщения
Проверить
Показать подсказку

8. Разложите примеры по категориям

id: 40442_incdec_08_sort_prefix_postfix_usage

Перед вами список Java выражений, содержащих различные операторы. Разнесите их по категориям в соответствии с их типом. Каждое выражение должно попасть в одну из трех категорий: префиксные инкремент/декремент, постфиксные инкремент/декремент, или выражения, не содержащие операторов ++/--. Обратите внимание, что некоторые выражения содержат операторы ++/-- как часть более сложного выражения.

Перетяните элементы в соответствующие блоки
Префиксный инкремент/декремент
Постфиксный инкремент/декремент
Не является ++/--
++i
i++
--j
j--
i + 1
i += 1
i = i + 1
i -= 1
++x * 2
y-- * 2
Сообщения
Проверить
Показать подсказку

9. Введите итоговое значение переменной

id: 40442_incdec_09_give_result_single_value

В этом задании вам нужно разложить примеры Java-выражений по трём категориям: префиксный инкремент/декремент, постфиксный инкремент/декремент, и выражения, которые не являются операторами ++/--. Внимательно изучите каждый фрагмент кода и определите, какой оператор в нём используется и где он находится относительно операнда.

Что должно получиться?
Сообщения
Проверить
Показать подсказку

10. Отметьте все постфиксные операции

id: 40442_incdec_10_click_target_postfix

Внимательно изучите приведённый фрагмент Java-кода. Ваша задача — отметить все операции инкремента и декремента, которые являются постфиксными, то есть стоят после переменной (вида i++ или i--). Не отмечайте префиксные операторы (вида ++i или --i) и другие выражения, которые не относятся к операторам ++/--.

Кликните по всем фрагментам, которые подходят под условие задания.
public class CounterExample {
    public static void main(String[] args) {
        int a = 10;
        int b = {{++a~|~t5}};  // префиксный инкремент
        int c = {{a++~|~t1}};  // постфиксный инкремент
        int d = {{--a~|~t6}};  // префиксный декремент
        int e = {{a--~|~t2}};  // постфиксный декремент
        
        int f = a + 1;        // обычное сложение
        int g = {{a += 1~|~t7}};  // оператор присваивания
        int h = {{a = a + 1~|~t8}};  // полная форма присваивания
        
        if (a > 0) {
            int result = {{count++~|~t3}} + {{num--~|~t4}};
        }
    }
}
Сообщения
Проверить
Показать подсказку

11. Разметьте части выражения с инкрементом

id: 40442_incdec_11_highlight_parts_tokens

В этом задании вам нужно разметить фрагмент Java-кода, содержащий операторы инкремента и декремента. Для каждого выделенного сегмента выберите его тип из предложенных категорий: ключевое слово, переменная, оператор, постфиксный инкремент, префиксный декремент или числовой литерал. Обратите внимание на положение операторов ++ и -- относительно переменных.

Кликните по каждому выделенному фрагменту и выберите для него подходящий тип из списка под текстом.
{{int~|~t1}} {{result~|~t2}} {{=~|~t3}} {{a++~|~t4}} {{+~|~t5}} {{--b~|~t6}} {{+~|~t7}} {{5~|~t8}};
Ключевое слово
Префиксный декремент
Переменная
Постфиксный инкремент
Оператор
Числовой литерал
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру