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

锯齿数组打印行数较预期少1行,求错误排查及解决方法

锯齿数组打印行数不足的问题排查与修复

嘿,我瞅了下你的代码,问题出在打印循环的两个小细节上,导致你看到的有效行数比预期少了1行,我给你拆解下:

1. 内层循环的边界条件错了

你初始化数组的时候,arr[i] = new int[i+1];——这意味着第i行(从0开始计数)有i+1个元素,索引范围是0到i。但你打印时的内层循环写的是:

for(int j = 0; j < i; j++)

这个条件只会让j从0跑到i-1,总共打印i个元素,不仅漏掉了最后一个元素(索引i),更关键的是:当i=0的时候,j < 0根本不成立,内层循环直接跳过,导致第0行完全没有输出内容。

2. 换行操作的位置不对

你把Console.WriteLine()放在了每行元素打印之前,这会导致:

  • 第一次循环(i=0)先输出一个空行,然后啥元素都没有;
  • 后续每行也都是先换行再打印元素,整体输出开头多了个空行,原本该有内容的第0行变成了空行,让你误以为少了一行。

修复后的完整代码

把这两个问题修正后,代码就符合你的预期了:

int h = int.Parse(Console.ReadLine());
int[][] arr = new int[h][];
for(int i = 0; i < h; ++i) {
    arr[i] = new int[i+1];
    // 这里可以给数组赋值,比如 arr[i][j] = j + 1; 不然输出都是默认的0哦
    for(int j = 0; j < i+1; j++){
        arr[i][j] = j + 1;
    }
}
for(int i = 0; i < h; i++) {
    for(int j = 0; j < i+1; j++) { // 修正循环边界,覆盖所有元素
        Console.Write(arr[i][j] + " ");
    }
    Console.WriteLine(); // 打印完当前行所有元素再换行
}

这样修改后,从i=0到i=h-1的每一行都会完整打印出对应数量的元素,正好是h行,和你想要的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:33:31