You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用字符数组统计字符串元音字母时遇到的问题

解决Java元音统计代码的异常与逻辑问题

你的代码存在三个核心问题,直接导致了数组越界、统计错误等异常:

1. 循环条件错误触发数组越界

你的for循环条件写的是myString.length() > 0,只要输入字符串非空,这个条件永远为真,i会不断递增,直到超过vowelArray的索引范围(数组只有10个元素,索引0-9),最终触发ArrayIndexOutOfBoundsException。正确的循环应该限定为遍历元音数组的所有元素,条件改为i < vowelArray.length。

2. else分支逻辑完全错误

只要某个元音不在字符串中,你就直接return 0,这会导致函数提前终止。比如统计"hello"时,第一个循环判断'A'是否存在,不存在就直接返回0,根本不会继续统计后面的'e'和'o',完全无法得到正确结果。

3. 统计逻辑偏差

用contains判断元音是否存在并计数,统计的是字符串中包含多少种不同的元音,而不是字符串里元音的总个数。比如输入"aaa",按原逻辑只会统计为1,但实际元音总数是3。


修正方案1:统计字符串中元音的总个数

如果你的需求是统计所有元音字符的数量,用以下代码:

public class App 
{
    public static int vowelCounter(String myString)
    {
        // 先处理空字符串或null的情况
        if(myString == null || myString.isEmpty()) {
            return 0;
        }
        char[] vowelArray = {'A','E','I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'};
        int countedVowels = 0; 
        
        // 遍历字符串的每个字符
        for(int i = 0; i < myString.length(); i++) {
            char currentChar = myString.charAt(i);
            // 检查当前字符是否是元音
            for(char vowel : vowelArray) {
                if(currentChar == vowel) {
                    countedVowels++;
                    break; // 找到匹配就跳出内层循环,避免重复判断
                }
            }
        }
        return countedVowels;
    }
}

修正方案2:统计字符串中包含的不同元音种类数

如果你的需求是统计有多少种不同的元音出现在字符串中,用以下代码:

public class App 
{
    public static int vowelCounter(String myString)
    {
        if(myString == null || myString.isEmpty()) {
            return 0;
        }
        char[] vowelArray = {'A','E','I', 'O', 'U', 'a', 'e', 'i', 'o', 'u'};
        int countedVowels = 0; 
        
        // 遍历元音数组,逐个判断是否存在于字符串中
        for(int i = 0; i < vowelArray.length; i++) {
            char vowel = vowelArray[i];
            if(myString.contains(String.valueOf(vowel))) {
                countedVowels++;
            }
            // 移除错误的else return 0分支
        }
        return countedVowels;
    }
}

内容的提问来源于stack exchange,提问作者TheTargetAudience

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:57:43