Циклы (for и while)
Во многих задачах нужно повторять одно и то же действие много раз:
перебрать числа от 1 до 100, прочитать N значений, посчитать сумму, найти максимум и т.п.
Для этого в Java есть циклы. В базовых задачах почти всегда хватает двух:
while— повторять, пока условие истинно;for— повторять фиксированное количество раз (обычно по счётчику.
Краткая сводка
Две основные формы цикла:
Чаще всего:
for— когда заранее известно количество повторений (например, ровно N чисел);while— когда повторяем «пока выполняется условие» (например, пока не встретили конец ввода или специальный знак).
Цикл while
Цикл while повторяет блок кода, пока условие истинно.
Порядок работы:
- проверяется условие
x > 0; - если условие истинно — выполняется тело цикла;
- после тела снова проверяется условие, и так далее;
- если условие стало ложным — цикл заканчивается.
Важно, чтобы внутри цикла что‑то менялось, иначе можно получить бесконечный цикл.
Цикл for
Цикл for удобно использовать, когда нужно пройти по диапазону чисел.
Здесь:
int i = 0— начальное значение счётчика;i < 5— условие продолжения цикла;i++— изменение счётчика после каждой итерации (то же, чтоi = i + 1).
В результате будут выведены числа 0, 1, 2, 3, 4.
Другой частый вариант — от 1 до N включительно:
Здесь условие i <= n, поэтому последнее число — n.
Сумма и количество
Частый шаблон: прочитать N чисел и посчитать их сумму.
int n = in.nextInt();
int sum = 0;
for (int i = 0; i < n; i++) {
int x = in.nextInt();
sum = sum + x; // или sum += x;
}
System.out.println(sum);
Здесь цикл for повторяется ровно n раз, каждый раз читается одно число.
Похожий шаблон для подсчёта количества:
int n = in.nextInt();
int countPositive = 0;
for (int i = 0; i < n; i++) {
int x = in.nextInt();
if (x > 0) {
countPositive++;
}
}
System.out.println(countPositive);
Минимум и максимум в последовательности
Ещё один стандартный приём — найти минимальное и максимальное значение.
int n = in.nextInt();
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
int x = in.nextInt();
if (x < min) {
min = x;
}
if (x > max) {
max = x;
}
}
System.out.println("min = " + min);
System.out.println("max = " + max);
Этот шаблон часто используется и для массивов.
Цикл while до конца ввода
Иногда заранее неизвестно, сколько чисел будет во входе. Тогда удобно использовать while с проверкой наличия следующего числа:
int sum = 0;
while (in.hasNextInt()) {
int x = in.nextInt();
sum = sum + x;
}
System.out.println(sum);
Цикл будет читать числа, пока во входе есть очередное целое (hasNextInt() возвращает true).
Когда числа закончатся, hasNextInt() даст false, и цикл завершится.
Что нужно запомнить
Цикл while повторяет тело, пока условие истинно:
Цикл for чаще всего используют для прохода по диапазону значений счётчика:
Для типичных задач по входным данным полезно запомнить шаблоны: сумма, количество, минимум/максимум и чтение до конца ввода.