Я интерпретирую этот вопрос следующим образом:
- Найдите слово в прилагаемой строке, в которой содержится наибольшее количество гласных.
- Если одно или несколько слов в этом самом одна и та же строка содержит одинаковое максимальное количество гласных, затем объединяет слова вместе, разделенные пробелом (или чем-то еще).
Итак, если предоставленная строка была: "hello my friend"
, тогда оба слова hello
и friend
, будет возвращено из метода maxVowelWords () в форме (скажем):
hello, friend
, так как оба hello
и friend
содержат 2 гласных, которые так получается максимальное количество гласных в любом данном слове, тогда оба слова возвращаются.
Если предоставленная строка, однако, была: "hello my friend - I live on the Mississippi river."
, то только Миссисипи возвращается из метода поскольку в этой строке есть слово only , содержащее максимальное количество гласных - 4. Все остальные слова, содержащие гласные в строке, содержат меньшее количество гласных.
Если это действительно так, то ваш метод должен выглядеть примерно так:
public static String maxVowelWords() {
String sentence = getSentence();
String words[] = sentence.split(" ");
int maxvowel = 0;
String maxWord = "";
for (int i = 0; i < words.length; i++) {
int count = countVowels(words[i]);
if (count == maxvowel) {
maxvowel = count;
// Ternary Operator is used here to applt the delimiter (", ") if needed,
maxWord += (maxWord.equals("") ? words[i] : ", " + words[i]) + " (" + count + " vowels)";
}
else if(count > maxvowel) {
maxvowel = count;
maxWord = words[i] + " (" + count + " vowels)";;
}
}
return maxWord;
}
Да, вы начинаете свой l oop из 0 и maxWord Строковая переменная должна быть инициализирована для хранения пустой строки (""). Пусть для l oop выполнит свою работу. И нет, count не является пустой тратой, это фактически требование для получения максимального количества гласных для maxvowel , поскольку каждое строковое слово помещается в процессе.
Вы используете метод с именем getSentence () , чтобы получить строку для обработки, и сразу же вы исказите эту строку оригинала, установив для нее все строчные буквы. Вы действительно не должны этого делать, поскольку слова, которые вы возвращаете из метода maxVowelWords () , не будут изначально предоставленными словами, если в них есть гласные в верхнем регистре. Небольшая модификация метода countVowel () может позаботиться об этом бизнесе, например:
if (Character.toLowerCase(ch) == cc) {
count++;
}