Тестирование с пробелами и табуляциями
На предыдущем этапе мы использовали метод 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()
на строках, содержащих несколько пробелов и табуляций, пройдя по символам строки. На следующем этапе мы рассмотрим, как этот метод обрабатывает непробельные символы.