编写一个程序,提示用户输入一系列字符并输出元音的数量

时间:2015-04-16 16:42:37

标签: java

  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;
}
}

代码有效,但我想输入&#34;春假只在一年一次。&#34;如果我使用空格我的程序只会找到Spring的元音。我怎么做它所以它会跳过空格并阅读整个句子。

3 个答案:

答案 0 :(得分:9)

这是你的问题:

String letters = keyboard.next();

它与元音计数部分无关 - 但与读取值有关。 Scanner.next()方法只会读取到令牌的末尾 - 这意味着默认情况下它会在空白处停止。

将其更改为

String letters = keyboard.nextLine();

你应该没事。

您应该通过打印出您正在使用的字符串来验证这是问题,例如

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

答案 1 :(得分:4)

当你这样做时:

String letters = keyboard.next();

Scanner在第一个空格处停止读取。

要阅读完整的短语,直到您按Enter键,您应该使用nextLine()代替:

String letters = keyboard.nextLine();

答案 2 :(得分:1)

只需使用

String letters = keyboard.nextLine();

而不是

String letters = keyboard.next();

这是因为.nextLine()将逐行读取,以便您可以在latters中使用完整的语句。希望这会对你有所帮助