0
对于类,我需要对文本文件执行多路排序。具体来说,我需要按元音计数,然后按长度来组织单词。我的问题在于按元音的数量对数组进行排序。按元音的数量对ArrayList中的字符串排序
我试图做的是迭代每个单词并计算该单词的元音。根据元音的数量,它会被添加到相应的队列中。
private static void vowelQueues(String[] words) {
Queue<String> noVowel = new LinkedList<String>();
Queue<String> oneVowel = new LinkedList<String>();
Queue<String> twoVowel = new LinkedList<String>();
Queue<String> threeVowel = new LinkedList<String>();
Queue<String> fourVowel = new LinkedList<String>();
Queue<String> fiveVowel = new LinkedList<String>();
Queue<String> sixVowel = new LinkedList<String>();
Queue<String> sevenVowel = new LinkedList<String>();
Queue<String> eightVowel = new LinkedList<String>();
Queue<String> nineVowel = new LinkedList<String>();
Queue<String> tenVowel = new LinkedList<String>();
char ch;
String vowelHolder = "";
int numVowels = 0;
for (String word : words) {
for (int i = 0; i < word.length(); i++) {
ch = word.charAt(i);
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
numVowels++;
if (numVowels == 1) {
oneVowel.add(word);
numVowels = 0;
} else if (numVowels == 2) {
twoVowel.add(word);
numVowels=0;
} else if (numVowels == 3) {
threeVowel.add(word);
numVowels=0;
}
}
}
}
System.out.print(oneVowel); //These are test output statements
System.out.print(twoVowel);
System.out.println(threeVowel);
}
问题是,包含元音的所有单词被添加到oneVowel队列中,其余的保持空白。我认为这是因为只要第一个if语句将整个单词添加到第一个队列中,numVowels就会递增。
我怎么会做它,所以它计数一句话都元音和然后将其添加到它的相应的队列?
它运作良好,谢谢!我确实有一个问题。如果将numVowels移出for循环,为什么代码无法工作? –
在for循环中迭代单词吗?想想看。你想为每个单词计算元音,所以你需要在每次扫描单词前每次初始化变量。如果你将它初始化在outer for循环之外,numVowels会给你在所有单词上找到的总元音,而不仅仅是一个字一个单词。 –
啊,这很有道理。这就是我在if语句中设置vowelCount = 0时所要做的。正如我的老师告诉我的,java不会犯错;用户确实。我一直在尽我所能来体现这一点,所以感谢修复这个用户错误! –