当前位置: 首页 > 知识库问答 >
问题:

按元音数量对ArrayList中的字符串进行排序

邓韬
2023-03-14

对于类,我需要对文本文件执行多向排序。具体来说,我需要按元音计数,然后按长度组织单词。我的问题在于按元音数量对数组进行排序。

我试图做的是遍历每个单词,并计算该单词的元音。根据元音的数量,它被添加到相应的队列中。

    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队列中,而其余的单词仍然为空。我认为这是因为一旦numVowels增加一次,第一个if语句就会将整个单词添加到第一个队列中。

我该如何使它计数单词中的所有元音,然后将其添加到相应的队列中?

共有1个答案

裴育
2023-03-14

发生这种情况的原因是,当任何一个条件为真时,您会将零赋给变量numVowels。numVowels变量永远不会递增,总是第一个条件为真。因此,在单元音队列中只添加元素

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); 
     }
}
 类似资料:
  • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

  • 我试图计算每个字符串中的元音,我想根据count变量交换字符串,但我做不到。在接受字符串后,我用toCharArray()函数将其转换为char数组,并将每个字符与小写和大写元音进行比较。 我收到一个错误。编写代码部分的任何帮助都将不胜感激。 输入: 输出:

  • 问题内容: 我有被随机放入的。 例如: 考虑到您无法控制输入的事实(即,进入ArrayList的字符串是随机的;以任何顺序排列的斑马或龙),一旦ArrayList充满了输入,我如何按字母顺序对它们进行排序(不包括第一个)? 很好 排序按字母顺序排列。 问题答案: 上面的代码将反映已排序原始列表的 实际子 列表。

  • 问题内容: 我创建了一个sqlite数据库,该数据库具有一个存储温度值的表。第一次将温度值以升序写入数据库。然后,我将数据库中的温度值读取到一个列表中,然后将该列表添加到组合框中以选择温度- 效果很好。 结果列表为: 然后,我向数据库添加一个新的温度值,例如“ 33”。 它被附加到表的末尾。如果我现在阅读温度,列表将变为: 如果我做或,最终的结果是 有什么简单的方法可以按升序对列表进行排序,以便得

  • 问题内容: 我有这样的txt文件中的数据列表 我的任务是按照每个标准对这些数据进行排序,例如)按日期,纬度和经度排序 我尝试像这样的泡沫排序 这可行,但是需要太多时间 那里有在txt文件数据 有没有其他方法可以对这些数据进行排序? 问题答案: 我可能会破坏一些学生的家庭作业,但是这里… 正如课题所建议的那样,Java的自然方法是创建一个表示您的数据的类。然后实现一个将传递给实用方法的方法。 在运行

  • 我正在尝试编写一个程序,根据列表中最不频繁的字符排列字符串列表。例如,如果列表是,列表中的字母频率将是a-5,n-3,p-2,e-2,l-1,o-1,r-1,g-1,b-1。由于橙色包含最不频繁的字母,程序将返回橙色,然后是apple,然后是banana。 到目前为止,我已经编写了按频率排列列表中所有字母的代码。但我需要应用它来找出哪个字符串包含最不频繁的字母。 这是我的代码: