Java: Цикл For
Цикл while
идеален для ситуаций, когда количество итераций неизвестно заранее, например, при поиске простого числа.
Когда количество итераций известно, предпочтительнее использовать цикл for
. Посмотрим реализацию переворота строки через цикл for
:
public static String reverseString(String str) {
var result = "";
// Счетчик увеличивается с помощью инкремента.
// Об этой операции мы поговорим ниже.
for (var i = 0; i < str.length(); i++) {
result = str.charAt(i) + result;
}
return result;
}
https://replit.com/@hexlet/java-basics-conditions-for
Этот код можно описать так:
Цикл с индексом
i
повторяется, покаi < str.length()
, а также после каждого шага увеличиваетi
на 1
В определении цикла for
есть:
- Начальное значение счетчика. Этот код выполняется ровно один раз перед первой итерацией
- Предикат — условие повторения циклов. Выполняется на каждой итерации. Точно так же как и в
while
- Описание изменения счетчика. Этот код выполняется в конце каждой итерации
В остальном принцип работы точно такой же, как у цикла while
.
Задание
Сэмвелл обнаружил, что его сообщения перехватываются в замке «Близнецы» и там читаются. Из-за этого их атаки перестали быть внезапными. Немного подумав, он разработал программу, которая бы шифровала сообщения по следующему алгоритму. Она бы брала текст и переставляла в нем каждые два подряд идущих символа.
App.encrypt("move"); // "omev"
App.encrypt("attack"); // "taatkc"
// Если число символов нечётное
// то последний символ остается на своем месте
App.encrypt("go!"); // "og!"
Реализуйте статический метод App.encrypt()
, который принимает на вход исходное сообщение и возвращает зашифрованное.
Упражнение не проходит проверку — что делать? 😶
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет 🤨
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя 🤔
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно 🙄
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.