我试图通过使用空格作为我的指示符来计算单词。
我目前的代码正在为wordCounter返回疯狂的结果,但我的vowelCounter工作正常。
如果这是一个基本或简单的问题,我道歉...我刚刚开始使用Java,我真的很感激任何帮助!
System.out.println("Please enter some text: ");
String fileContent = input.nextLine().toLowerCase();
int vowelCounter = 0;
int wordCounter = 0;
for (int i = 0; i < fileContent.length(); i++) {
if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u')
vowelCounter++;
for (int j = 0; j < fileContent.length(); j++) {
if (Character.isWhitespace(fileContent.charAt(j))) {
wordCounter++;
}
}
}
System.out.println("\nVowel Counter: " + vowelCounter);
System.out.println("Word Counter: " + wordCounter);
答案 0 :(得分:1)
当你有不好的缩进时会发生这种情况。您正在使用嵌套的for循环而不是2个单独的for循环。
将你的循环分开,如:
for (int i = 0; i < fileContent.length(); i++) {
if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u')
vowelCounter++;
}
for (int j = 0; j < fileContent.length(); j++) {
if (Character.isWhitespace(fileContent.charAt(j)))
wordCounter++;
}
或者将它们放在1个单循环中:
for (int i = 0; i < fileContent.length(); i++) {
if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u')
vowelCounter++;
else if (Character.isWhitespace(fileContent.charAt(i))) {
wordCounter++;
}
}
最重要的是,要检查字符串中是否存在特定字符(例如元音),您可以这样做:
char ch = fileContent.charAt(i);
if("aeiou".contains("" + ch))
答案 1 :(得分:0)
循环中有一个冗余循环。只需将第二个if
添加到同一个循环中:
for (int i = 0; i < fileContent.length(); i++) {
if(fileContent.charAt(i) == 'a' || fileContent.charAt(i) == 'e' || fileContent.charAt(i) == 'i'|| fileContent.charAt(i) == 'o' || fileContent.charAt(i) == 'u')
vowelCounter++;
else if (Character.isWhitespace(fileContent.charAt(i)))
wordCounter++;
}
答案 2 :(得分:0)
你可能想在wordcount中添加1,因为它计算的是空格数。例如:在“apple banana”中,有1个空格但有2个单词。除此之外,计算空格还有缺点,例如,当单词之间有两个或更多连续的空格时。