Введение
В этом практическом занятии (лабораторной работе) вы узнаете, как проверить, является ли символ пробельным в Java, используя метод Character.isWhitespace(). Вы изучите, как этот метод определяет различные пробельные символы, включая пробелы, табуляции, переводы строк и возвраты каретки.
С помощью практических упражнений вы протестируете метод с разными символами, включая пробелы, табуляции и непробельные символы, такие как буквы и цифры, чтобы понять его поведение и практическое применение в программировании на Java.
Использование метода Character.isWhitespace()
На этом этапе мы рассмотрим, как использовать метод Character.isWhitespace() в Java. Этот метод является частью класса Character и используется для определения, является ли заданный символ пробельным. К пробельным символам относятся пробелы, табуляции, переводы строк и возвраты каретки.
Понимание того, как определять пробельные символы, полезно во многих программистских задачах, таких как разбор текста, валидация ввода или форматирование вывода.
Создадим новый Java-файл, чтобы поэкспериментировать с этим методом.
Откройте WebIDE, если он еще не открыт.
В проводнике файлов слева убедитесь, что вы находитесь в директории
~/project.Щелкните правой кнопкой мыши в пустом пространстве директории
~/projectи выберите "Новый файл".Назовите новый файл
WhitespaceChecker.java.Откройте файл
WhitespaceChecker.javaв редакторе.Скопируйте и вставьте следующий Java-код в редактор:
public class WhitespaceChecker { public static void main(String[] args) { char space = ' '; char tab = '\t'; char newline = '\n'; char letter = 'a'; char digit = '1'; System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space)); System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab)); System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline)); System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter)); System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit)); } }Рассмотрим новые части этого кода:
char space = ' ';: Здесь объявляется переменная с именемspaceтипаcharи ей присваивается пробельный символ.char tab = '\t';: Здесь объявляется переменная с именемtabи ей присваивается символ табуляции.\t- это управляющая последовательность, представляющая табуляцию.char newline = '\n';: Здесь объявляется переменная с именемnewlineи ей присваивается символ перевода строки.\n- это управляющая последовательность, представляющая перевод строки.char letter = 'a';: Здесь объявляется переменная с именемletterи ей присваивается символ 'a'.char digit = '1';: Здесь объявляется переменная с именемdigitи ей присваивается символ '1'.Character.isWhitespace(space): Здесь мы вызываем методisWhitespace(). Мы передаем в него символspace, и он вернетtrue, если символ является пробельным, иfalseв противном случае. Мы делаем то же самое для других символов.System.out.println(...): Мы используемprintlnдля вывода результата вызова методаisWhitespace()вместе с описательным сообщением.
Сохраните файл
WhitespaceChecker.java(Ctrl+S или Cmd+S).
Теперь, когда мы написали код, нам нужно скомпилировать и запустить его, чтобы увидеть вывод.
Откройте терминал внизу WebIDE. Убедитесь, что вы находитесь в директории
~/project.Скомпилируйте Java-программу с помощью команды
javac:javac WhitespaceChecker.javaЕсли нет ошибок, эта команда создаст файл
WhitespaceChecker.classв директории~/project.Запустите скомпилированную Java-программу с помощью команды
java:java WhitespaceCheckerВы должны увидеть вывод, похожий на следующий:
Is ' ' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Is 'a' whitespace? false Is '1' whitespace? falseЭтот вывод показывает, что метод
isWhitespace()правильно определил пробел, табуляцию и символ перевода строки как пробельные символы, а букву и цифру как непробельные символы.
Вы успешно использовали метод Character.isWhitespace() для проверки различных символов. На следующем этапе мы протестируем этот метод на более широком спектре примеров, включая разные типы пробельных символов.
Тестирование с пробелами и табуляциями
На предыдущем этапе мы использовали метод Character.isWhitespace() с одиночным пробелом и одиночной табуляцией. На этом этапе мы будем дополнительно тестировать этот метод на строках, содержащих несколько пробелов и табуляций, чтобы увидеть, как он ведет себя.
Помните, что метод Character.isWhitespace() работает с отдельными символами, а не с целыми строками. Чтобы проверить, состоит ли строка только из пробельных символов, или чтобы обработать пробельные символы в строке, обычно нужно пройти по строке посимвольно и применить метод isWhitespace() к каждому символу.
Давайте изменим файл WhitespaceChecker.java, чтобы включить тесты с несколькими пробелами и табуляциями.
Откройте файл
WhitespaceChecker.javaв редакторе WebIDE.Замените существующий код на следующий обновленный код:
public class WhitespaceChecker { public static void main(String[] args) { char space = ' '; char tab = '\t'; char newline = '\n'; char letter = 'a'; char digit = '1'; System.out.println("Is '" + space + "' whitespace? " + Character.isWhitespace(space)); System.out.println("Is '" + tab + "' whitespace? " + Character.isWhitespace(tab)); System.out.println("Is '" + newline + "' whitespace? " + Character.isWhitespace(newline)); System.out.println("Is '" + letter + "' whitespace? " + Character.isWhitespace(letter)); System.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit)); System.out.println("\nTesting with multiple characters:"); String testString1 = " "; // Three spaces String testString2 = "\t\t"; // Two tabs String testString3 = " \t "; // Spaces and tabs String testString4 = "Hello World"; // Contains space, but also letters System.out.println("Checking characters in: \"" + testString1 + "\""); for (int i = 0; i < testString1.length(); i++) { char c = testString1.charAt(i); System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c)); } System.out.println("Checking characters in: \"" + testString2 + "\""); for (int i = 0; i < testString2.length(); i++) { char c = testString2.charAt(i); System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c)); } System.out.println("Checking characters in: \"" + testString3 + "\""); for (int i = 0; i < testString3.length(); i++) { char c = testString3.charAt(i); System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c)); } System.out.println("Checking characters in: \"" + testString4 + "\""); for (int i = 0; i < testString4.length(); i++) { char c = testString4.charAt(i); System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c)); } } }Вот разбор нового кода:
String testString1 = " ";: Мы создаем строку с тремя пробельными символами.String testString2 = "\t\t";: Мы создаем строку с двумя символами табуляции.String testString3 = " \t ";: Мы создаем строку, содержащую комбинацию пробелов и табуляций.String testString4 = "Hello World";: Мы создаем строку с буквами и пробелом.for (int i = 0; i < testString1.length(); i++): Это циклfor, который проходит по каждому символу строки.char c = testString1.charAt(i);: Внутри цикла методcharAt(i)получает символ по текущему индексуiи сохраняет его в переменнуюc.System.out.println(" Is '" + (c == ' ' ? " " : (c == '\t' ? "\\t" : c)) + "' whitespace? " + Character.isWhitespace(c));: Эта строка выводит, является ли текущий символcпробельным, используя методCharacter.isWhitespace(c). Часть(c == ' ' ? " " : (c == '\t' ? "\\t" : c))представляет собой тернарный оператор, используемый для вывода видимого представления пробелов и табуляций в выводе.
Сохраните файл
WhitespaceChecker.java.
Теперь скомпилируем и запустим обновленную программу.
Откройте терминал внизу WebIDE. Убедитесь, что вы находитесь в директории
~/project.Скомпилируйте Java-программу:
javac WhitespaceChecker.javaЗапустите скомпилированную Java-программу:
java WhitespaceCheckerВы должны увидеть вывод, похожий на следующий, включая результаты для каждого символа в тестовых строках:
Is ' ' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Is 'a' whitespace? false Is '1' whitespace? false Testing with multiple characters: Checking characters in: " " Is ' ' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Checking characters in: " " Is '\t' whitespace? true Is '\t' whitespace? true Checking characters in: " " Is ' ' whitespace? true Is ' ' whitespace? true Is '\t' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Checking characters in: "Hello World" Is 'H' whitespace? false Is 'e' whitespace? false Is 'l' whitespace? false Is 'l' whitespace? false Is 'o' whitespace? false Is ' ' whitespace? true Is 'W' whitespace? false Is 'o' whitespace? false Is 'r' whitespace? false Is 'l' whitespace? false Is 'd' whitespace? falseЭтот вывод подтверждает, что метод
Character.isWhitespace()правильно определяет отдельные пробелы и символы табуляции в строках, даже если они следуют подряд или смешаны с другими символами.
Вы успешно протестировали метод Character.isWhitespace() на строках, содержащих несколько пробелов и табуляций, пройдя по символам строки. На следующем этапе мы рассмотрим, как этот метод обрабатывает непробельные символы.
Обработка не-пробельных символов
На предыдущих этапах мы сосредоточились на определении пробельных символов с помощью метода Character.isWhitespace(). Теперь давайте явно покажем, как этот метод обрабатывает символы, которые не считаются пробельными. Это укрепит ваше понимание того, какие символы метод определяет, а какие нет.
Хотя в предыдущих примерах мы уже использовали некоторые непробельные символы (например, 'a' и '1'), давайте добавим несколько более разнообразных примеров в файл WhitespaceChecker.java.
Откройте файл
WhitespaceChecker.javaв редакторе WebIDE.Добавьте следующие строки кода в метод
main, после существующих операторовSystem.out.println, но перед циклами, которые проходят по строкам. Вы можете добавить их после строкиSystem.out.println("Is '" + digit + "' whitespace? " + Character.isWhitespace(digit));.char punctuation = '.'; char symbol = '$'; char controlChar = '\u0000'; // Null character System.out.println("Is '" + punctuation + "' whitespace? " + Character.isWhitespace(punctuation)); System.out.println("Is '" + symbol + "' whitespace? " + Character.isWhitespace(symbol)); System.out.println("Is U+0000 whitespace? " + Character.isWhitespace(controlChar)); // Printing control chars might not display correctlyРассмотрим новые символы, которые мы добавили:
char punctuation = '.';: Знак пунктуации.char symbol = '$';: Символ.char controlChar = '\u0000';: Это Unicode-управляющая последовательность для нулевого символа, который является управляющим символом. МетодCharacter.isWhitespace()также проверяет определенные управляющие символы, которые считаются пробельными по стандарту Unicode.
Сохраните файл
WhitespaceChecker.java.
Теперь скомпилируем и запустим обновленную программу, чтобы увидеть вывод для этих новых символов.
Откройте терминал внизу WebIDE. Убедитесь, что вы находитесь в директории
~/project.Скомпилируйте Java-программу:
javac WhitespaceChecker.javaЗапустите скомпилированную Java-программу:
java WhitespaceCheckerВы должны увидеть вывод, похожий на следующий, включая результаты для новых символов:
Is ' ' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Is 'a' whitespace? false Is '1' whitespace? false Is '.' whitespace? false Is '$' whitespace? false Is U+0000 whitespace? false Testing with multiple characters: Checking characters in: " " Is ' ' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Checking characters in: " " Is '\t' whitespace? true Is '\t' whitespace? true Checking characters in: " " Is ' ' whitespace? true Is ' ' whitespace? true Is '\t' whitespace? true Is ' ' whitespace? true Is ' ' whitespace? true Checking characters in: "Hello World" Is 'H' whitespace? false Is 'e' whitespace? false Is 'l' whitespace? false Is 'l' whitespace? false Is 'o' whitespace? false Is ' ' whitespace? true Is 'W' whitespace? false Is 'o' whitespace? false Is 'r' whitespace? false Is 'l' whitespace? false Is 'd' whitespace? falseКак видите из вывода, знак пунктуации ('.') и символ ('$') правильно определяются как непробельные. Нулевой символ (
\u0000) также определяется как непробельный методомCharacter.isWhitespace(). Этот метод специально проверяет символы, определенные как пробельные в стандарте Unicode, которые включают пробел, табуляцию, перевод строки, возврат каретки, перевод страницы (\f) и некоторые другие управляющие символы и разделители пробелов.
Теперь вы увидели, как метод Character.isWhitespace() ведет себя с различными типами символов, включая стандартные пробельные и непробельные символы, такие как знаки пунктуации, символы и управляющие символы. Это завершает наше исследование метода Character.isWhitespace().
Резюме
В этом практическом занятии (лабораторной работе) мы научились проверять, является ли символ пробельным в Java с помощью метода Character.isWhitespace(). Мы изучили, как этот метод определяет общие пробельные символы, такие как пробелы, табуляции и переводы строки.
Мы практиковались в использовании метода Character.isWhitespace() путем создания простой Java-программы, которая тестировала различные символы, включая пробелы, табуляции и непробельные символы, такие как буквы и цифры, чтобы узнать, классифицируются ли они как пробельные. Это практическое упражнение показало практическое применение метода для определения и обработки пробельных символов в Java-коде.



