首页 > 解决方案 > 指示字符串中哪个元音出现的次数最多

问题描述

我正在用 Java 编写一个程序,它应该给出这样的输出:

我的代码编译成功,除了确定哪个元音出现最多之外,我一切都成功了。

我不确定我应该怎么做,首先计算单个元音(例如“a”)出现的次数(而不是字符串中出现的总元音的数量)。在找到每个元音的总数后,我不确定用什么来确定具有最大值的元音。一旦我能够完成这两个步骤,我就不确定如何正确输出。我更愿意使用 if 语句来完成此操作,但我不知道这是否可能。

任何帮助/提示将不胜感激,这是我编写的代码:

    // which vowel occurs the most
    if (ch == 'a')
      vowelA++;
    else if (ch == 'e')
      vowelE++;
    else if (ch == 'i')
      vowelI++;
    else if (ch == 'o')
      vowelO++;
    else if (ch == 'u')
      vowelU++;

    if (vowelA > vowelE && vowelA > vowelI && vowelA > vowelO && vowelA > vowelU)
    {
      maxVowels = vowelA;
    }
  }

// OUTPUT
System.out.println("vowel" + " " + "occurs the most = " + maxVowels);

 }
}

标签: javastringalgorithmfind-occurrences

解决方案


可以有很多方法。我正在写其中之一。你可以试试:

// for number of VOWELS
for (int i = 0; i < str.length(); i++)
{
    ch = str.charAt(i);
    ch = Character.toLowerCase(ch);

    // is this a vowel
    if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')
    {
        vowels++;
    }

    // which vowel occurs the most
    if (ch == 'a')
        vowelA++;
    else if (ch == 'e')
        vowelE++;
    else if (ch == 'i')
        vowelI++;
    else if (ch == 'o')
        vowelO++;
    else if (ch == 'u')
        vowelU++;

}

maxVowels = Math.max(vowelA, Math.max(vowelE, Math.max(vowelI, Math.max(vowelO, vowelU))));

输出:

在此处输入图像描述

注意:我刚刚maxVowels = Math.max(vowelA, Math.max(vowelE, Math.max(vowelI, Math.max(vowelO, vowelU))));在大写逻辑之前添加并删除了存储 maxVowels 值的 if 条件。

另一种方式:替换maxVowels = Math.max(vowelA, Math.max(vowelE, Math.max(vowelI, Math.max(vowelO, vowelU))));Collections.max(Arrays.asList(vowelA, vowelE, vowelI, vowelO, vowelU));


推荐阅读