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

如何修改二维数组指定范围的元素值?Java代码问题求助

问题分析与解决方案

嘿,我一眼就发现问题所在啦!你的循环终止条件逻辑出错了,这才导致只修改了单个元素。

错误原因拆解

你当前的循环条件是这样的:

for (int i = rowPos; i < rows; i++)
    for (int j = colPos; j < columns; j++)

这里rows是4,rowPos是3,所以i的取值范围是3 <= i < 4——也就是只有i=3这一个值;同理j也只会取到j=3,自然就只修改了block[3][3]这一个位置的元素。

修正后的代码

你需要把循环终止条件改成起始位置 + 要修改的行数/列数,这样才能覆盖从rowPos开始的rows行,以及从colPos开始的columns列:

int[][] block = new int[10][10];
int rowPos = 3, colPos = 3;
int rows = 4, columns = 4;
// 修改循环终止条件,确保覆盖指定的行数和列数
for (int i = rowPos; i < rowPos + rows; i++)
    for (int j = colPos; j < colPos + columns; j++)
        block[i][j] = 1;
for (int[] x : block) {
    for (int y : x)
        System.out.print(y + " ");
    System.out.println();
}

验证输出结果

运行修正后的代码,输出就会和你期望的完全一致:

0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 1 1 1 1 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

说白了就是你之前的循环没算清楚“从起始位置往后要延伸多少行/列”,而是直接把要修改的行数/列数当成了上限,这才导致范围错误~

内容的提问来源于stack exchange,提问作者Jaimee-lee Lincoln

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 12:12:41