我正在尝试计算一个句子中单词的数量,这些单词在一对“z”字符之间恰好包含两个元音而没有" z"它们之间。单词之间可能有多个空格,字母可以是大写或小写。显示每个句子中与模式匹配的单词数。继续阅读句子,直到用户输入" *"。我当前的代码有什么问题。我有两个类In和Root,用于输出/输入。 我有以下代码用于root,它有很多问题; //
public class Root
{ public static void main(String[] args)
{ new Root(); }
public Root()
{
String sentence = readSentence();
int count = 0;
while(!(sentence = readSentence()).equals("*"))
{
System.out.println(" Matching words = " + words(sentence));
}
}
private int words(String sentence)
{
int count = 0;
for(String word: sentence.split(" +"))
{
if(matches(word))
count++;
}
return count;
}
private boolean matches(String word)
{
int Vowels = 3;
for( int i = 0; i < word.length(); i++)
{
char c = word.charAt(i);
if( c == 'z')
{
for (i=3; i<word.length(); ++i) {
if (word.charAt(i)=='z' && word.charAt(i-3)=='z' && isVowel(word.charAt(i-1)) && isVowel(word.charAt(i-2))) {
return true;
}
}
return false;
}
else if(isVowel(c))
{
}
}
return false;
}
private boolean isVowel(char c)
{
return "aeiou".contains("" + c);
}
private String readSentence()
{
//prompt
System.out.println("Sentence: *");
//return Value
return In.nextLine().toLowerCase();
}
}
答案 0 :(得分:0)
您的matches
方法有一个使用相同索引的内部循环 - i
- 作为外部循环。这不可能是对的。为内循环使用不同的变量。
此外,您的Root
构造函数对第一次调用readSentence()
时返回的句子不执行任何操作。
答案 1 :(得分:0)
让我给你一些建议。
indexOf
方法而不是contains
,因为您可以直接传递字符。 aeiou
值,以避免每次调用方法时重新创建它。i
,这可能是导致问题的主要原因。