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
相关产品推荐
相关产品推荐

