首页 > 解决方案 > 计算单词中元音的数量

问题描述

我想编写一个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]);
        
        
        
    }
}

标签: java

解决方案


只需更改您的打印语句以在打印元音计数后也打印元音:

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

推荐阅读