Logo
Книга для начинающих
ВходРегистрация
/
Программирование
/
Курс Java
/

Условия внутри тела цикла

Java: Условия внутри тела цикла

Тело цикла, как и тело метода — это место выполнения инструкций. Значит, мы можем использовать внутри него все изученное ранее — в том числе условные конструкции.

Рассмотрим метод, который считает, сколько раз входит буква в предложение:

countChars("Fear cuts deeper than swords.", 'e'); // 4
// Если вы ничего не нашли, то результат — 0 совпадений
countChars("Sansa", 'y'); // 0

Сначала попробуйте ответить на вопросы:

  • Является ли эта операция агрегацией?
  • Какой будет проверка на вхождение символа?

А теперь посмотрим на фрагмент кода:

public static int countChars(String str, char ch) {
  var i = 0;
  var count = 0;
  while (i < str.length()) {
    if (str.charAt(i) == ch) {
      // Считаем только подходящие символы
      count = count + 1;
    }
    // Счетчик увеличивается в любом случае
    i = i + 1;
  }

  return count;
}

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

Ключевое отличие этого цикла от рассмотренных в наличии условия внутри тела. Переменная count увеличивается только в том случае, когда текущий рассматриваемый символ совпадает с ожидаемым. В остальном — это типичный агрегатный метод, который возвращает количество нужных символов вызываемому коду.

Задание

Метод из теории учитывает регистр букв. То есть A и a с его точки зрения разные символы. Реализуйте вариант этого же метода, так чтобы регистр букв был не важен:

App.countChars("HexlEt", 'e'); // 2
App.countChars("HexlEt", 'E'); // 2
  • Character.toLowerCase() – переводит символ в нижний регистр
Коммерческий опыт и Трудоустройство

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

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

Условия внутри тела цикла

Java: Условия внутри тела цикла

Тело цикла, как и тело метода — это место выполнения инструкций. Значит, мы можем использовать внутри него все изученное ранее — в том числе условные конструкции.

Рассмотрим метод, который считает, сколько раз входит буква в предложение:

countChars("Fear cuts deeper than swords.", 'e'); // 4
// Если вы ничего не нашли, то результат — 0 совпадений
countChars("Sansa", 'y'); // 0

Сначала попробуйте ответить на вопросы:

  • Является ли эта операция агрегацией?
  • Какой будет проверка на вхождение символа?

А теперь посмотрим на фрагмент кода:

public static int countChars(String str, char ch) {
  var i = 0;
  var count = 0;
  while (i < str.length()) {
    if (str.charAt(i) == ch) {
      // Считаем только подходящие символы
      count = count + 1;
    }
    // Счетчик увеличивается в любом случае
    i = i + 1;
  }

  return count;
}

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

Ключевое отличие этого цикла от рассмотренных в наличии условия внутри тела. Переменная count увеличивается только в том случае, когда текущий рассматриваемый символ совпадает с ожидаемым. В остальном — это типичный агрегатный метод, который возвращает количество нужных символов вызываемому коду.

Задание

Метод из теории учитывает регистр букв. То есть A и a с его точки зрения разные символы. Реализуйте вариант этого же метода, так чтобы регистр букв был не важен:

App.countChars("HexlEt", 'e'); // 2
App.countChars("HexlEt", 'E'); // 2
  • Character.toLowerCase() – переводит символ в нижний регистр
Коммерческий опыт и Трудоустройство

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

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

Ваше упражнение проверяется по этим тестам

import static org.assertj.core.api.Assertions.assertThat;

class Test {
    public static void main(String[] args) {
        assertThat(App.countChars("axe", 'a')).isEqualTo(1);
        assertThat(App.countChars("", 'a')).isEqualTo(0);
        assertThat(App.countChars("OpPa", 'p')).isEqualTo(2);
        assertThat(App.countChars("OpPa", 'P')).isEqualTo(2);
    }
}
← ПредыдущийСледующий →

Решение учителя откроется через:

20:00

waiting_clock
← ПредыдущийСледующий →