2013-10-23 89 views
0

這從我們的老師給我們的單詞庫中拉出來,我應該返回沒有元音的最長單詞。但它要麼返回一個元音字母,要麼什麼都沒有。請幫忙。爲什麼不排除元音?

//什麼是最長的沒有元音的單詞(將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

因爲你在一個運行循環,又回到'上的第一個非元音字符TRUE'你」我會遇到...... – alfasin

回答

3

在你的方法noVowel,你只要你找到一個字符不aeiou,或者y返回true。這是錯誤的。只要找到這些字符中的一個,只要返回false,並且只有當這些字中沒有任何字符時才返回true

像這樣:

public static boolean noVowel(String word) { 
     for(int i = 0; i < word.length(); i++) { 
      //if a vowel found then return false 
      if (word.charAt(i) == 'a') { 
       return false; 
      } 
      if (word.charAt(i) == 'e') { 
       return false; 
      } 
      if (word.charAt(i) == 'i') { 
       return false; 
      } 
      if (word.charAt(i) == 'o') { 
       return false; 
      } 
      if (word.charAt(i) == 'u') { 
       return false; 
      } 
      if (word.charAt(i) == 'y') { 
       return false; 
      } 

     } 
    return true; // No vowel found, return true 
} 
+0

每當我使所有的元音返回false,它給了我一個空白的迴應。 – Timmy

+0

非常感謝你! – Timmy

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; 
} 
相關問題