这是我们老师给我们的一个词汇库,我应该返回没有元音的最长词。但它要么用元音返回一个单词,要么根本不返回任何单词。请帮助。
//没有元音的最长单词是什么(将y计为元音)?
public static void Question7()
{
// return the number of words in wordlist ending in "ing"
String longestWordSoFar = " ";
System.out.println("Question 7:");
int numberOfWords = 0; //count of words ending in ing
for(int i = 1; i < WordList.numWords(); i++) // check every word in wordlist
{
if(noVowel(WordList.word(i))) { // if the length is greater than the previous word, replace it
{
if(WordList.word(i).length() > longestWordSoFar.length())
longestWordSoFar=WordList.word(i);
}
}
}
System.out.println("longest word without a vowel: " + longestWordSoFar);
System.out.println();
return;
}
public static boolean noVowel(String word) {
//tells whether word ends in "ing"
for(int i = 0; i < word.length(); i++) {
//doesnt have a vowel - return true
if (word.charAt(i) != 'a') {
return true;
}
if (word.charAt(i) != 'e') {
return true;
}
if (word.charAt(i) != 'i') {
return true;
}
if (word.charAt(i) != 'o') {
return true;
}
if (word.charAt(i) != 'u') {
return true;
}
if (word.charAt(i) != 'y') {
return true;
}
}
return false;
}
答案 0 :(得分:3)
在您的方法noVowel
中,一旦找到不是true
,a
,e
,{{1}的字符,就会返回i
},o
或u
。这是错的。当您找到其中一个字符时,您宁愿返回y
,只有在单词中没有字符时才返回false
。
像这样:
true
答案 1 :(得分:0)
更改noVowel方法,如:
public static boolean noVowel(String word) {
boolean noVowel=true;
for(int i=0;i<word.length();i++){
char ch=word.charAt(i);
if(ch=='a' ||ch=='e' ||ch=='i' ||ch=='o' ||ch=='u' ||ch=='y'){
noVowel=false;
break;
}
}
return noVowel;
}