Java: Цикл For
Вкратце
for (счётчик; предикат; изменение счётчика) {
// тело цикла
}
// например
for (var index = 10; index >= 0; index--) {
// ...
}
Инструкция цикла for по существу является сокращенной записью для while
, позволяющей объявить счетчик, указать его начальное значение и условие прекращения более компактно - обычно в одну строку кода. Вот как изменится реализация переворота строки, если вместо while
применить for
:
static String reverseString(String str) {
var result = "";
for (var index = str.length() - 1; index >= 0; index--) {
var currChar = str.charAt(index);
result = result + currChar;
}
return result;
}
Можно читать так: «цикл с индексом index
повторяется пока index >= 0
и после каждого шага уменьшает index
на 1».
И за счет того, что вся эта фраза собрана в одной строке кода и к тому же легко в ней читается (если начальное значение, предикат и изменение могут быть записаны коротко), понятность кода от этого выигрывает.
В определении цикла for
есть:
- начальное значение счетчика
- предикат-условие повторения циклов
- описание того, как счётчик меняется после каждого шага
Принцип работы точно такой же, как у цикла while
. Традиционно цикл for
применяют именно со счетчиками, когда некий счетчик принимает значения от M до N с некоторым шагом. Конечно, никто не мешает применять его, например, в такой форме:
var s = "";
for (; s.length < 3; ) { s += "*"; }
- этот код создает строку
s
из трех "звездочек", при этом не указано ни объявление счетчика, ни инструкция для изменения счетчика - только проверяемое условие. Но в таких случаях - когда счетчика нет - у циклаfor
нет преимущества в компактности кода передwhile
и тогда обычно применяютwhile
.
Давайте рассмотрим ход движения программы на примере вызова функции с простой строкой:
reverseString("cat"); // tac
В строке 3 символа, поэтому в цикле будет 3 итерации.
Задание
Реализуйте функцию sumOfSeries()
, которая считает сумму ряда целых чисел. Ряд задаётся двумя числами — начальным и конечным.
Функция принимает два аргумента-числа и возвращает сумму ряда. Например, для аргументов 4, 7
сумма будет 4 + 5 + 6 + 7 = 22
.
sumOfSeries(1, 2); // 3
sumOfSeries(1, 3); // 6
sumOfSeries(4, 7); // 22
Если начальное и конечное числа равны, то результатом будет то же число:
sumOfSeries(1, 1); // 1
Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.