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

设置区间边界后for循环失效,多维数组生成异常求助

问题分析与修正

你的代码输出全0的核心原因是没有给创建的二维数组赋值,Java中用new int[][]初始化的数组,所有元素默认是0,直接打印自然都是0。另外你的内层循环逻辑混淆了「数组索引」和「要填充的数值」,导致循环执行逻辑完全错误。

具体错误点

  • 数组未赋值:只创建了数组结构,但没有把0-90的数值填充到数组对应的位置。
  • 内层循环逻辑错误:你把要填充的起始数值(比如15)当成了数组的列索引,而数组的列索引应该从0开始;同时span的计算和循环条件完全不符合需求,导致内层循环根本没正确遍历数组的列。

修正后的代码

public class H {
    public static void main(String[] args) {
        int min = 0;
        int max = 90;
        int n = 6;

        // 计算每个子数组的元素个数,这里90-0刚好能被6整除,结果为15
        int elementsInBin = (max - min) / n;
        int[][] bin = new int[n][elementsInBin];
        
        for(int i = 0; i < n; i++){
            // 当前行要填充的起始数值
            int currentStart = elementsInBin * i;
            // 遍历当前行的每一列,给数组赋值
            for(int j = 0; j < elementsInBin; j++){
                // 给数组的第i行第j列赋值:起始数值+列索引
                bin[i][j] = currentStart + j;
                // 打印元素,加空格分隔
                System.out.print(bin[i][j] + " ");
            }
            // 每行打印完换行,方便查看
            System.out.println();
        }
    }
}

修正说明

  1. 数组赋值:通过currentStart + j计算出当前位置要填充的数值,currentStart是当前行的第一个数,j从0到14,刚好覆盖15个连续数值(比如第0行是0+0到0+14=14,第1行是15+0到15+14=29,以此类推)。
  2. 循环逻辑修正:内层循环的j是数组的列索引,从0开始遍历到elementsInBin-1,对应每个子数组的所有位置,不再混淆数值和索引。
  3. 输出优化:添加空格和换行,让输出的数组内容更易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:45:28