Подсчет гласных и согласных в Java

В этом уроке Java мы изучим различные способы подсчета количества гласных и согласных в заданной строке. Мы рассмотрим потоки Java 8, простую итерацию и другие методы.

Обратите внимание, что в английском алфавите 5 гласных(«a», «e», «i», «o», «u»), а все остальные — согласные. В отличие от этого, в Java у нас может быть несколько видов символов, таких как буквы алфавита, цифры, специальные символы, пробелы и т. д. Поэтому наше решение должно исключать исключительно символы, не входящие в алфавит.

1. Использование Stream для подсчета гласных и согласных

Чтобы подсчитать количество гласных и согласных в строке, мы можем перебрать символы строки, а затем использовать Collectors.groupingBy() в две группы. Первая группа будет содержать гласные, а вторая группа — согласные.

Мы используем коллектор Collectors.groupingBy для разбиения элементов потока на две группы в зависимости от того, является ли символ гласным или согласным. Ключом результирующей карты будет либо «гласные», либо «согласные».

Наконец, мы используем нижестоящий сборщик Collectors.counting() для подсчета вхождений каждой группы.

String input = "howtodoinjava.com".toLowerCase();Map<String, Long> counts = input.chars().mapToObj(c ->(char) c)// Filter characters to include only vowels and consonants.filter(c -> "aeiou".indexOf(c) != -1 || "bcdfghjklmnpqrstvwxyz".indexOf(c) != -1)// Collect the filtered characters into a map.collect(Collectors.groupingBy(c -> "aeiou".indexOf(c) != -1 ? "vowels" : "consonants",Collectors.counting()));System.out.println("Counts: " + counts); 

Вывод программы:

Counts: {vowels=7, consonants=9}

2. Использование итерации для подсчета гласных и согласных

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

  • Прочитать входную строку
  • Преобразуйте строку в нижний регистр, чтобы сократить количество сравнений.
  • Перебрать все символы по одному
  • Если текущий символ совпадает с гласными(a, e, i, o, u), то увеличьте vCount на 1
  • В противном случае, если какой-либо символ находится между «a» и «z», то увеличьте счетчик для cCount на 1.
  • Распечатать оба счета

Пример использования итерации на Java для подсчета гласных и согласных в указанной строке.

String str = "howtodoinjava.com".toLowerCase();int vCount = 0, cCount = 0;for(int i = 0; i < str.length(); i++) {if("aeiou".indexOf(str.charAt(i)) != -1) {vCount++;}else if(str.charAt(i) >= 'a' && str.charAt(i) <= 'z') {cCount++;}}System.out.println("Number of vowels: " + vCount);System.out.println("Number of consonants: " + cCount);

Вывод программы.

Number of vowels: 7Number of consonants: 9

Напишите мне ваши вопросы, связанные с программами Java для подсчета количества гласных и согласных в заданной строке.

Прокрутить вверх