Поскольку это домашнее задание, я не буду решать его за вас, а вместо этого укажу правильное направление.
Взгляните на класс Character
и вспомогательные методы, которые он определяет. (Подсказка: все они называются isXyz()
)
Справка:
Для этого: вот метод oneliner для подсчета слов с помощью Regex. Не используйте это решение, придумайте свое. В любом случае, это, вероятно, не то, что хотят видеть ваши учителя.
Метод:
public static int countwords(final String phrase) {
return phrase.replaceAll("[^\\p{Alpha}]+", " ").trim().split(" ").length;
}
Тестовый код:
System.out.println(countwords(
"Schreiben Sie ein Praktikanten-Vermittlungs-Programm"));
System.out.println(countwords(
"Du magst ja recht haben – aber ich sehe das ganz anders."));
System.out.println(countwords("Hallo Welt !!!!"));
System.out.println(countwords("Zwei Wörter !!!!"));
System.out.println(countwords("Eins,Zwei oder Drei"));
Выход:
6
11
2
3
4
Пояснение:
Чтобы использовать фразу, придуманную Генри Роллинзом: давайте доить это, не так ли?
// replace any occurrences of non-alphabetic characters with a single space
// this pattern understands unicode, so e.g. German Umlauts count as alphabetic
phrase.replaceAll("[^\\p{Alpha}]+", " ")
// trim space off beginning and end
.trim()
// split the string, using the spaces as delimiter
.split(" ")
// the length of the resulting array is the number of words
.length;