为什么这不包括元音?

时间:2013-10-23 07:29:47

标签: java

这是我们老师给我们的一个词汇库,我应该返回没有元音的最长词。但它要么用元音返回一个单词,要么根本不返回任何单词。请帮助。

//没有元音的最长单词是什么(将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;
        }

2 个答案:

答案 0 :(得分:3)

在您的方法noVowel中,一旦找到不是trueae,{{1}的字符,就会返回i },ou。这是错的。当您找到其中一个字符时,您宁愿返回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;
}