Подсчёт и фильтрация символов
Практические задачи с типом char
«Подсчёт и фильтрация символов» — бесплатный урок Java Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Подсчёт с помощью цикла
Чтобы подсчитывать символы, заведите переменную-счётчик и каждый раз прибавляйте к ней 1, когда условие выполняется.
Начните со значения счётчика 0, переберите каждый символ и увеличьте счётчик, если символ проходит проверку.
int count = 0;
for (char c : "hello".toCharArray()) {
count++;
}Подсчёт гласных
Здесь мы считаем гласные, проверяя каждый символ на принадлежность к набору гласных.
Сначала мы переводим символ в нижний регистр, чтобы 'A' и 'a' подсчитывались одинаково.
public class Main {
public static void main(String[] args) {
String text = "Java Rocks";
int vowels = 0;
for (char c : text.toCharArray()) {
char low = Character.toLowerCase(c);
if (low == 'a' || low == 'e' || low == 'i' || low == 'o' || low == 'u') {
vowels++;
}
}
System.out.println(vowels);
}
}Подсчёт цифр
Чтобы посчитать, сколько цифр встречается в строке String, используйте Character.isDigit внутри цикла.
Это автоматически пропускает буквы и символы, поэтому счётчик увеличивается только для чисел.
public class Main {
public static void main(String[] args) {
String text = "abc123x9";
int digits = 0;
for (char c : text.toCharArray()) {
if (Character.isDigit(c)) digits++;
}
System.out.println(digits);
}
}Подсчёт букв
Замените условие на Character.isLetter, чтобы вместо этого считать буквенные символы.
Структура остаётся прежней: цикл, проверка и увеличение счётчика. Меняется только условие.
public class Main {
public static void main(String[] args) {
String text = "a1 b2 c3";
int letters = 0;
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) letters++;
}
System.out.println(letters);
}
}Подсчёт определённого символа
Чтобы посчитать один определённый символ, сравнивайте каждый символ с помощью ==.
Так можно посчитать, сколько раз буква 'a' встречается в тексте.
public class Main {
public static void main(String[] args) {
String text = "banana";
int aCount = 0;
for (char c : text.toCharArray()) {
if (c == 'a') aCount++;
}
System.out.println(aCount);
}
}Фильтрация символов
Фильтрация означает создание новой строки String, в которой сохраняются только нужные вам символы.
Здесь мы сохраняем буквы и цифры, удаляя пробелы и знаки пунктуации, добавляя символы в результирующую строку String.
public class Main {
public static void main(String[] args) {
String text = "a-b 1!2";
String clean = "";
for (char c : text.toCharArray()) {
if (Character.isLetterOrDigit(c)) clean += c;
}
System.out.println(clean);
}
}Использование StringBuilder
Создание строки String с помощью += в длинном цикле выполняется медленно, поскольку на каждом шаге создаётся новая строка String.
StringBuilder работает быстрее: добавляйте символы, а в конце вызовите toString().
public class Main {
public static void main(String[] args) {
String text = "H e l l o";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (!Character.isWhitespace(c)) sb.append(c);
}
System.out.println(sb.toString());
}
}Удаление пробельных символов
Распространённый фильтр удаляет пробелы, табуляции и переводы строк с помощью Character.isWhitespace.
Сохраняйте каждый символ, который не является пробельным, чтобы убрать пробелы из текста.
public class Main {
public static void main(String[] args) {
String text = " J a v a ";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (!Character.isWhitespace(c)) sb.append(c);
}
System.out.println(sb.toString());
}
}Сначала фильтрация, затем подсчёт
Идеи можно объединить: сначала отфильтровать строку String, оставив только нужные символы, а затем измерить её длину.
Здесь мы считаем только буквы, выполняя фильтрацию и считывая значение length().
public class Main {
public static void main(String[] args) {
String text = "a1b2c3";
StringBuilder sb = new StringBuilder();
for (char c : text.toCharArray()) {
if (Character.isLetter(c)) sb.append(c);
}
System.out.println(sb.length());
}
}Подсчёт прописных и строчных букв
Можно одновременно вести несколько счётчиков. Здесь мы отдельно считаем прописные и строчные буквы.
Каждый символ проходит две независимые проверки, увеличивая соответствующий счётчик.
public class Main {
public static void main(String[] args) {
String text = "JavaCode";
int upper = 0, lower = 0;
for (char c : text.toCharArray()) {
if (Character.isUpperCase(c)) upper++;
if (Character.isLowerCase(c)) lower++;
}
System.out.println(upper + " " + lower);
}
}Зачем нужна фильтрация
Подсчёт и фильтрация — повседневные задачи: проверка паролей, очистка пользовательского ввода или подсчёт разных типов символов.
Один и тот же шаблон «цикл и проверка» подходит для всех этих задач. Измените только условие в соответствии с вашей целью.
if (Character.isDigit(c)) {
count++;
}Быстрая проверка
Проверьте, насколько хорошо вы понимаете подсчёт и фильтрацию символов.
Итоги
Для подсчёта используется счётчик, который увеличивается, когда символ проходит проверку, например isDigit или ==.
При фильтрации создаётся новая строка String, содержащая только нужные символы. Для скорости лучше использовать StringBuilder. Изменяйте условие, чтобы считать гласные, буквы или цифры либо удалять пробельные символы.
Часто задаваемые вопросы
Урок «Подсчёт и фильтрация символов» бесплатный?
Да — полный текст урока «Подсчёт и фильтрация символов» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подсчёт и фильтрация символов»?
Практические задачи с типом char Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Подсчёт и фильтрация символов»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Примитивный тип char
- Вспомогательные методы для символов
- Циклы по символам
- Подсчёт и фильтрация символов