2015-04-16 57 views
-1
import java.util.*; 

public class VowelCounter 
{ 
    public static void main(String[] args) 
    { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Input a series of characters: "); 
    String letters = keyboard.next(); 
    int count = 0; 
    for (int i = 0; i < letters.length(); i++) 
    { 
     char characters = letters.charAt(i); 
     if (isVowel(characters) == true) 
     { 
      count++; 
     } 
    } 
    System.out.println("The number of vowels is: " + count); 

    } 
    public static boolean isVowel(char characters) 
    { 
    boolean result; 
     if(characters=='a' || characters=='e' || characters=='i' || characters=='o' || characters=='u') 
     result = true; 
     else 
     result = false; 
    return result; 
} 
} 

該代碼有效,但即使假設輸入「Spring break only only once once year。」。如果我使用空格,我的程序只能找到Spring的元音。我如何做到這一點,所以它會跳過空格並閱讀整個句子。編寫一個程序,提示用戶輸入一個字符序列並輸出元音的數字

+4

而不是使用'字母=鍵盤。鍵盤();'使用'keyboard.nextLine()' – gtgaxiola

回答

4

當你這樣做:

String letters = keyboard.next(); 

Scanner停止讀取在第一空白。

要閱讀完整的短語,直到你按回車,你應該使用nextLine()代替:

String letters = keyboard.nextLine(); 
9

這是你的問題:

String letters = keyboard.next(); 

它無關,與元音計數部分 - 但一切與閱讀價值。 Scanner.next()方法將只讀取到令牌的末尾 - 默認情況下,它表示停止在空白處。

改變,要

String letters = keyboard.nextLine(); 

,你應該罰款。

您應該通過打印出您正在使用的字符串來驗證這是個問題,例如,

System.out.println("Counting vowels in: " + letters); 
1

只需使用

String letters = keyboard.nextLine(); 

,而不是

String letters = keyboard.next(); 

這是因爲.nextLine ()將逐行讀取,以便您可以將完整的語句放在後面。希望這會幫助你

相關問題