Java: Обход строк

С помощью циклов обрабатывают числа и работают со строками. Строка состоит из символов, и до каждого символа можно добраться по его индексу. Индексы начинаются с нуля, поэтому первый символ строки "Arya" имеет индекс 0, а последний — индекс length() - 1.

Получить символ по индексу позволяет метод charAt(), а узнать длину строки — метод length(). Этих двух методов и счетчика достаточно, чтобы пройти строку символ за символом. Ниже пример кода, который печатает буквы слова на отдельных строках:

public static void printNameBySymbol(String name) {
    var i = 0;
    // Такая проверка выполняется до конца строки,
    // включая последний символ. Его индекс `length() - 1`.
    while (i < name.length()) {
        // Обращаемся к символу по индексу
        System.out.println(name.charAt(i));
        i = i + 1;
    }
}

var name = "Arya";
App.printNameBySymbol(name);
// "A"
// "r"
// "y"
// "a"

Цикл проходит по каждому символу строки по очереди:

"Arya"
 │ │ │ │
 A r y a
 ↓ ↓ ↓ ↓
каждый символ обрабатывается по очереди

Главное в этом коде — поставить правильное условие в while. Сделать это можно двумя способами:

  • i < name.length()
  • i <= name.length() - 1

Оба способа приводят к одному результату. Первый встречается чаще, потому что в нем меньше арифметики.

Обход в обратном порядке

Счетчик не обязан расти от нуля. Если начать с последнего индекса и уменьшать его до нуля, строка пройдется задом наперед. Напишем метод, который печатает символы слова в обратном порядке:

public static void printReversed(String name) {
    // Начинаем с последнего символа
    var i = name.length() - 1;
    while (i >= 0) {
        System.out.println(name.charAt(i));
        i = i - 1;
    }
}

App.printReversed("Arya");
// "a"
// "y"
// "r"
// "A"

Здесь счетчик i стартует со значения name.length() - 1, двигается к нулю и завершает цикл, когда становится меньше нуля. На каждом шаге метод берет символ по текущему индексу и печатает его. Направление обхода задает только начальное значение счетчика и способ его изменения.

Задание

Реализуйте статический метод App.printReversedNameBySymbol(), который печатает переданное слово посимвольно, как в примере из теории, но делает это в обратном порядке.

var name = "Arya";
App.printReversedNameBySymbol(name);
// 'a'
// 'y'
// 'r'
// 'A'

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются