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

Java遍历字符串数组统计单词元音次数的代码问题求助

问题分析与修正

你的代码存在几个关键问题,导致无法正确统计每个单词的元音数量:

  • 内层循环遍历范围错误:内层循环应该遍历当前单词的字符(st1[k].length()),而不是字符串数组的长度(st1.length),否则会出现字符串索引越界异常,且无法遍历完单词的所有字符。
  • 元音判断逻辑错误:char是基本数据类型,不能用equals()方法比较;同时你错误地拿当前单词的字符和元音字符串对应索引的字符对比,这完全不符合需求——正确的逻辑应该是检查当前字符是否属于元音集合中的任意一个。
  • 缺少统计结果输出:统计完每个单词的元音数量后,没有将结果打印出来,无法看到最终统计值。

修正后的代码

String st = "Hello Today Is a lovely day";
String[] st1 = st.split(" ");
String vo = "AaEeIiOoUu";

// 遍历每个单词
for(int k = 0; k < st1.length; k++) {
    int num = 0;
    String currentWord = st1[k];
    // 遍历当前单词的每个字符
    for(int h = 0; h < currentWord.length(); h++) {
        char currentChar = currentWord.charAt(h);
        // 检查当前字符是否是元音
        if(vo.indexOf(currentChar) != -1) {
            num++;
        }
    }
    // 输出当前单词的元音统计结果
    System.out.println("单词 '" + currentWord + "' 的元音数量:" + num);
}

代码说明

  • 内层循环改为遍历currentWord.length(),确保能遍历完当前单词的所有字符。
  • 使用vo.indexOf(currentChar) != -1判断字符是否在元音字符串中,这是一种简洁的检查方式;你也可以用vo.contains(String.valueOf(currentChar)),效果一致。
  • 每次统计完一个单词的元音数量后,立即打印结果,清晰展示每个单词的统计值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:59:59