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

Java二维数组整数出现次数统计代码运行异常求助

二维数组整数出现次数统计代码问题定位与修复

存在的问题

  • 输入提示不匹配:定义的二维数组为4行3列,总计12个存储位置,代码中却提示用户输入7个数字,逻辑冲突。
  • 对比遍历逻辑完全错误:第三层k循环的上限设为10,远大于二维数组第二维的长度3,运行时会触发ArrayIndexOutOfBoundsException数组越界异常,之前能正常运行属于巧合。
  • 元素对比逻辑错误:原代码用num2d[i][k] == num2d[j][k]做对比,仅在对比同一列的元素,完全没有覆盖二维数组所有位置的元素,统计结果自然不符合预期。
  • 重复标记逻辑混乱:原duplicate数组的标记和赋值逻辑没有对应上元素出现的实际频次,无法正确去重输出。

修复后可正常运行的代码

package test.code;

import java.util.Scanner;

public class TestCode {

    public static void main(String[] args) {
        Scanner userInput = new Scanner(System.in);
        int row = 4;
        int col = 3;
        int total = row * col;
        int[][] num2d = new int[row][col];
        int[][] duplicate = new int[row][col];

        int i, j, count;
        final int FLAG_REPEATED = 0;
        final int FLAG_INIT = -1;

        // 修正输入提示,匹配数组总大小
        System.out.print("请输入" + total + "个数字: ");
        for (i = 0; i < row; i++) {
            for (j = 0; j < col; j++) {
                num2d[i][j] = userInput.nextInt();
                duplicate[i][j] = FLAG_INIT;
            }
        }

        // 重写统计逻辑,遍历所有元素
        for (i = 0; i < row; i++) {
            for (j = 0; j < col; j++) {
                // 已经标记为重复的元素跳过统计
                if (duplicate[i][j] == FLAG_REPEATED) {
                    continue;
                }
                count = 1;
                // 遍历当前元素之后的所有位置,避免重复统计
                for (int pos = i * col + j + 1; pos < total; pos++) {
                    int k = pos / col;
                    int l = pos % col;
                    if (num2d[i][j] == num2d[k][l]) {
                        count++;
                        // 后续重复的位置标记为0,避免重复输出
                        duplicate[k][l] = FLAG_REPEATED;
                    }
                }
                duplicate[i][j] = count;
            }
        }

        // 输出结果
        for (i = 0; i < row; i++) {
            for (j = 0; j < col; j++) {
                if (duplicate[i][j] != FLAG_REPEATED) {
                    System.out.println("数字 " + num2d[i][j] + " 出现 " + duplicate[i][j] + " 次。");
                }
            }
        }
        userInput.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:36:00