使用java数组方法计算和显示字符串中的元音

使用java数组方法计算和显示字符串中的元音,java,arrays,methods,char,Java,Arrays,Methods,Char,我在这里寻找解决方案已经有一段时间了,但我无法找到需要的解决方案,我被要求做的那个。。。 所以我需要从用户那里得到一个字符串,并计算和显示字符串中的所有大写和小写元音。 以下是所需的输出: Enter a string: IAMHERE a : occured 0 e : occured 0 i : occured 0 o : occured 0 u : occured 0 A : occured 1 O : occured 0 U : occured 0 I :

我在这里寻找解决方案已经有一段时间了,但我无法找到需要的解决方案,我被要求做的那个。。。 所以我需要从用户那里得到一个字符串,并计算和显示字符串中的所有大写和小写元音。 以下是所需的输出:

Enter a string:
IAMHERE
a  : occured 0 
e  : occured 0 
i  : occured 0 
o  : occured 0 
u  : occured 0 
A  : occured 1 
O  : occured 0 
U  : occured 0
I  : occured 1
E  : occured 2

以下是我迄今为止所做的工作:

import java.util.Scanner;

public class CountVowels {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a string:");
        String input = sc.next();
        char[] chars = createArray(input);
        countLet(chars);
    }

    static char[] createArray(String str) {
        char[] chars = new char[str.length()];
        for (int i = 0; i < chars.length; i++) {
            chars[i] = str.charAt(i);
        }
        return chars;
    }

    static void countLet(char[] chars) {
        char[] vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'O', 'U', 'I', 'E'};
        int numberOfVowels = 0;
        for (int i = 0; i < chars.length; i++) {
            if (chars[i] == vowels[i]) {
                numberOfVowels++;
            }
            System.out.println(vowels[i] + "  : occured " + numberOfVowels + " ");
        }
    }
}


那我能做什么

当您将
字符[i]
元音[i]
进行比较时,会出现问题。由于您正在递增
i
程序没有所需的输出

例如,字符串:
Hello

H仅根据“a”进行检查

e仅与“e”对照检查

我只检查“我” 等等

这也意味着,如果字符串的长度大于
元音.length
,则会出现IndexOutOfBounds异常

您需要检查每个字母是否为元音的代码:

for(char c:input){//循环遍历字符串中的每个字符
对于(char v:元音){//循环遍历每个元音
如果(c==v){//这个字母是元音
元音数目++;
break;//这个字母也不能是另一个元音,所以要从内部循环中分离出来
}
}
}

然后,您可以修改此项并将元音更改为
映射
,以便跟踪每个元音被看到的次数

当您将
字符[i]
元音[i]
进行比较时,会出现问题。由于您正在递增
i
程序没有所需的输出

例如,字符串:
Hello

H仅根据“a”进行检查

e仅与“e”对照检查

我只检查“我” 等等

这也意味着,如果字符串的长度大于
元音.length
,则会出现IndexOutOfBounds异常

您需要检查每个字母是否为元音的代码:

for(char c:input){//循环遍历字符串中的每个字符
对于(char v:元音){//循环遍历每个元音
如果(c==v){//这个字母是元音
元音数目++;
break;//这个字母也不能是另一个元音,所以要从内部循环中分离出来
}
}
}

然后,您可以修改此项并将元音更改为
映射
,以便跟踪每个元音出现的次数

您必须在元音上迭代,并在此循环中计算当前元音出现的次数。在元音循环结束时,打印出您必须在元音上迭代的次数,并在此循环中,计算当前元音出现的次数。在元音循环的末尾,打印出times@Lino是的,忘记了它是一个原语for循环应该被交换,否则你就不能真正打印出你想要的输出have@Lino是的,忘记了它是一个原语for循环应该被交换,否则你就不能真正打印OP想要的输出
Enter a string:
IAMHERE
a  : occured 0 
e  : occured 0 
i  : occured 0 
o  : occured 0 
u  : occured 0 
A  : occured 0 
O  : occured 0