Циклы и условия

Циклы и условия — ключевые инструменты в программировании. Поэтому стоит рассмотреть еще несколько примеров.

Пример 1: Запуск цикла при условии

Задача: написать функцию shouter, которая принимает строку и, если в строке больше 5 символов, выводит её на экран 100 раз. Если в строке 5 символов или меньше, то функция ничего не делает.

Начнём писать функцию:

static void shouter(String str) {

}

Как вы наверное догадались, чтобы вывести строку 100 раз на экран, понадобится цикл. Но это нужно только в случае, если строка больше 5 букв.

Значит, нужно начать с создания условия:

static void shouter(String str) {
  var length = str.length();

  if (length > 5) {
  }
}

Внутри фигурных { } скобок после if будет код, который исполнится только при условии length > 5. Здесь будет цикл для повторения 100 раз.

Напомним стратегию для создания подобных циклов:

  1. Создать счётчик и задать ему начальное значение.
  2. Сделать цикл, который будет повторяться, пока счётчик не дошёл до какого-то конечного значения.
  3. В теле цикла выполнять нужное действие (в нашем случае — вывод на экран) и обновлять счётчик.

Нам нужно 100 повторений, поэтому сделаем счётчик со значением 0 и будем увеличивать его на 1 каждый шаг, и так до тех пор, пока счётчик не станет равным 100.

static void shouter(String str) {
  var length = str.length();

  if (length > 5) {
    var counter = 0;
    while (counter != 100) {
      System.out.print(str);
      counter += 1;
    }
  }
}

counter += 1 - это увеличение счётчика на 1.

Запустим:

shouter("HELLO!");
HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!HELLO!

А теперь давайте модифицируем функцию так, чтобы она возвращала результат, а не выводила его на экран. Воспользуемся тем же приёмом, что был в функции для переворота строки: создадим пустую строку result и будем её наполнять в цикле, а потом вернём из функции.

static String shouter(String str) {
  var length = str.length();
  var result = "";
  if (length > 5) {
    var counter = 0;
    while (counter != 100) {
      result += str;
      counter += 1;
    }
  }
  return result;
}

Задание

Модифицируйте последний вариант функции shouter, добавив такие условия:

  1. Если длина строки больше 0 и меньше 5, то вернуть оригинальную строку без повторений.
  2. Если длина строки ровно 5 символов, то вернуть строку, повторенную 10 раз.

Условие «если длина больше 5, то вернуть строку, повторенную 100 раз» должно сохраниться.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.