Циклы используются для того, чтобы выполнить некое действие нужное количество раз. Ниже мы рассмотрим различные циклы в java.
Для начала определимся:
boolean
результат. Либо true
, либо false
. Например: a < b
, something == something
, myObject.equals(othetObject)
, !myObject.equals(othetObject)
, alpha != beta
и так далее. Про логические операторы нужно почитать тут.Если мы знаем заранее, сколько раз нужно повторить некое действие, то используем цикл for.
for (int i = начальноеЗначениеСчетчика; условие; алгоритмИзмененияСчетчика) {
// действие;
// действие;
}
В этом цикле нужно:
true
либо false
;Счетчик принято объявлять типа int
. Даже для нескольких итераций. И он не обязан начинаться с нуля.
Цикл for будет проверять условие перед началом каждой итерации. Пока условие равно true
— цикл будет выполнять итерацию.
После каждой итерации цикл будет менять счетчик.
Пример в коде:
for (int i = 0; i <= 10; i++) {
System.out.println("Something important"); // 11 раз будет напечатан текст "Something important"
}
Его можно прервать раньше времени словом break или "проскочить" итерацию словом continue.
for (int i = 0; i <= 10; i++) {
if (i % 2 == 0) { // остаток от деления на два равен нулю?
System.out.println(i); //
continue; // сразу переходим к следующей итерации
}
if (i == 9) {
System.out.println("Finish now!");
break; // финиш жизни цикла
}
}
Для работы с массивами (и другими структурами данных) иногда лучше использовать foreach.
for (ТипСсылки имяСсылкиНаЭлемент : ссылкаНаМассив) {
// действие;
// действие;
}
Этот цикл получает ссылку на массив справа от двоеточия. А ссылка слева от двоеточия ссылается на ячейку №0 этого массива. С каждой итерацией ссылка будет ссылаться на следующую ячейку массива. И так до конца массива. Естественно, что в каждой ячейке может быть некий элемент. Содержимые в массиве элементы и ссылка слева от двоеточия должны быть одного типа.
После достижения последней ячейки массива цикл foreach завершает свою работу. Этот цикл тоже можно прервать раньше времени словом break или "проскочить" итерацию словом continue.
В коде это будет выглядеть так:
// где-то в main-методе...
int[] testArray = new int[100];
// наполним массив случайными числами в пределах от 0 до 99
// для записи элементов в массив — foreach не подходит
for (int i = 0; i < testArray.length; i++) {
testArray[i] = new Random().nextInt(100); // для работы рандома нужно импортировать соответствующий класс
}
// теперь применим foreach
int numberOfIteration = 1; // просто для наглядности будем выводить номер итерации
for (int oneElementInArray : testArray) {
if (oneElementInArray >= 50) {
System.out.printf("\nIteration number: %d __ Element: %d", numberOfIteration,
oneElementInArray); // печатаем в консоль на новой строке номер итерации
// и элемент
numberOfIteration++;
continue; // переходим к следующей итерации и упускаем следующие строки в теле цикла
}
if (oneElementInArray == 0) { // сработает не в каждом запуске программы
System.out.println("\nWow, this is a numerical donut!");
break; // цикл завершится как только попадется элемент 0
}
}
Если заранее не знать количество повторений действий, то используем цикл while.
while (условие) {
// действие;
// действие;
}
Цикл while будет выполняться пока вычисление условия будет иметь результат true
. Если написать в условии просто слово true
, то цикл будет вечным!
Вот пример while в коде:
// где-то в main-методе...
int someNumber = 1;
while (someNumber != 0) {
someNumber = new Random().nextInt(100); // для работы рандома нужно импортировать соответствующий класс
System.out.println("Current someNumber is: " + someNumber);
}
Обратите внимание, что нам пришлось задать начальное значение для someNumber
равное 1
. Иначе цикл while ни разу не выполнился бы.
Но, для подобных случаев есть иная форма записи цикла: do-while.
do {
// действие;
} while (условие);
Теперь мы можем для someNumber
назначить начальное значение равное 0
.
Пример в коде:
// где-то в main-методе...
int someNumber = 0;
do {
someNumber = new Random().nextInt(100); // не забываем импортировать класс Random
System.out.println("Current someNumber is: " + someNumber);
} while (someNumber != 0);
Такая форма записи позволяет выполнить цикл хотя бы один раз и только потом проверить условие.
Циклы for и while могут быть переиспользованы между собой:
while | for |
---|---|
|
|
|
|
|
|
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт