java - 指示字符串中哪个元音出现的次数最多
问题描述
我正在用 Java 编写一个程序,它应该给出这样的输出:
- 元音 = 8
- 上 = 2
- 数字 = 5
- 空格 = 6
- 元音 i 出现次数最多 = 4
我的代码编译成功,除了确定哪个元音出现最多之外,我一切都成功了。
我不确定我应该怎么做,首先计算单个元音(例如“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);
}
}
解决方案
可以有很多方法。我正在写其中之一。你可以试试:
// 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));
推荐阅读
- python - Rasa Core:utter_template() 缺少 1 个必需的位置参数:'tracker'
- c++ - GeographicLib:移动 latLon 坐标并返回创建偏移量
- java - 如何开始使用动态 Jasper
- powerbi - 如何在 Power BI DAX 中逐行添加?
- python - Python:使用 PIL 加载 png 文件会产生奇怪的结果
- .net - 如何将压缩后的数据流复制到 F# 中的文件?
- php - 致命:pathspec 'composer.lock' 不匹配任何文件
- java - 如何修复 tinyRadius 坏包:无效标识符异常?
- testing - Gradle testkit 无法将插件添加到自定义源集
- javascript - 在内部渲染 HTML