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不會犯錯;用戶確實。我一直在盡我所能來體現這一點,所以感謝修復這個用戶錯誤! –