В этом уроке 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 для подсчета количества гласных и согласных в заданной строке.