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的元音。我怎么做它所以它会跳过空格并阅读整个句子。
答案 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中使用完整的语句。希望这会对你有所帮助