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

Java字符串数组元音统计代码出错,请求排查与修正指导

代码问题分析及修复

核心错误点

  1. 仅检查单个字符:原代码中values[i].charAt(i)只检查了第i个字符串的第i位字符,完全没有遍历字符串的所有字符统计元音,逻辑完全错误。
  2. 单一变量复用:用全局的vowels变量累加所有符合条件的字符,最后输出时所有行都打印同一个值,导致每个字符串的元音数量显示完全一致。

修复后的代码

import java.util.Scanner;

public class Array2 {

    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        String[] values = new String[5];
        // 用数组存储每个字符串的元音数量,与输入字符串一一对应
        int[] vowelCounts = new int[5];

        for (int i = 0; i < values.length; i++) {
            System.out.print("Enter the string: ");
            values[i] = keyboard.nextLine();
            int currentVowels = 0;
            // 遍历当前字符串的每一个字符
            for (int j = 0; j < values[i].length(); j++) {
                // 转小写,兼容大写元音的情况
                char c = Character.toLowerCase(values[i].charAt(j));
                if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
                    currentVowels++;
                }
            }
            vowelCounts[i] = currentVowels;
        }

        // 输出表头和结果
        System.out.printf("%15s %15s %15s %15s\n", "Number", "Value", "Length", "Number of Vowels");
        for (int n = 0; n < values.length; n++) {
            System.out.printf("%15d %15s %15d %15d\n", n + 1, values[n], values[n].length(), vowelCounts[n]);
            System.out.println();
        }
        keyboard.close();
    }
}

关键改动说明

  • 新增vowelCounts数组,为每个输入字符串单独存储元音数量,避免了单一变量的复用问题。
  • 增加内层循环,遍历每个字符串的所有字符,确保每个字符都被检查是否为元音。
  • 加入Character.toLowerCase()处理,让代码可以识别大写的元音字母(如'A'、'E'),提升代码的通用性。
  • 输出时对应每个字符串的vowelCounts[n]值,保证每个结果都是对应字符串的真实元音数量。
  • 补充keyboard.close(),关闭输入流避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:35:19