对于类(class),我需要对文本文件执行多路排序。具体来说,我需要按元音计数组织单词,然后按长度组织单词。我的问题在于按元音数量对数组进行排序。
我试图做的是迭代每个单词并计算该单词的元音。根据元音的数量,它会被添加到相应的队列中。
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。您的 numVowels 变量永远不会增加,并且第一个条件始终为真。因此,只有元素被添加到 oneVowel 队列中。
for (String word : words) {
numVowels = 0;
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);
} else if (numVowels == 2) {
twoVowel.add(word);
} else if (numVowels == 3) {
threeVowel.add(word);
}
}
关于java - 按元音数量对 ArrayList 中的字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40335509/