java - 计算单词中元音的数量
问题描述
我想编写一个java代码来获得这样的输出,但我不能这样做,而是得到一个类似这样的输出“元音的数量是:11010”有人可以告诉我我在做什么错误的?
输入:蒙特利尔
输出:元音的数量是:1 a, 1 e, 1 o
import java.util.Scanner;
public class Problem1
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str;
int cnt[] = new int[5];
str = sc.nextLine();
for (int i = 0; i < str.length(); ++i) {
if (str.charAt(i) == 'a' || str.charAt(i) == 'A') {
cnt[0]++;
}
if (str.charAt(i) == 'e' || str.charAt(i) == 'E') {
cnt[1]++;
}
if (str.charAt(i) == 'i' || str.charAt(i) == 'I') {
cnt[2]++;
}
if (str.charAt(i) == 'o' || str.charAt(i) == 'O') {
cnt[3]++;
}
if (str.charAt(i) == 'u' || str.charAt(i) == 'U') {
cnt[4]++;
}
}
System.out.println("The number of vowels is: " + cnt[0] + cnt[1] + cnt[2] + cnt[3] + cnt[4]);
}
}
解决方案
只需更改您的打印语句以在打印元音计数后也打印元音:
StringBuilder output = new StringBuilder("The number of vowels is: "+ cnt[0] + " a, " + cnt[1] + " e, " + cnt[2] + " i, " + cnt[3] + " o, " + cnt[4] + " u";
System.out.println(output);
顺便说一句,您还可以使用映射来存储元音和计数,而不是数组:
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Map<Character, Integer> map = new HashMap<>();
for (int i=0; i < str.length(); ++i) {
char letter = Character.toLowerCase(str.charAt(i));
if (letter == 'a' || letter == 'e' || letter == 'i' ||
letter == 'o' || letter == 'u') {
Integer count = map.get(letter);
map.put(letter, count == null ? 1 : count + 1);
}
}
StringBuilder output = new StringBuilder();
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (output.length() > 0) output.append(", ");
output.append(entry.getValue() + " " + entry.getKey());
}
System.out.println("The number of vowels is: " + output.toString());
这打印:
The number of vowels is: 1 a, 1 e, 1 o
推荐阅读
- python - 从最后一个元素到第一个元素的数组
- electron - 如何获取打包电子应用程序错误的完整日志?
- php - 如何在PHP中获取具有html同名类的数组
- r - R:按多个组计数(dplyr) - 这是正确的
- r - R - deSolve 包(ode 函数):根据时间更改 SIR 模型中的参数矩阵
- java - 尝试制作一个接受简单字符串输入并将其存储在 Java 中的棋盘
- r - 在 R 中解释对数转换的多元回归模型
- javascript - 尝试将我的“aws-amplify”包导入我的入口点时收到 JSLint 错误
- java - 如何从 BarChart MPAndroid 图表中删除十进制值?我尝试了几种方法但没有奏效
- javascript - 排序/创建具有重叠的偏好列表的排名