如何修改二维数组指定范围的元素值?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
相关产品推荐
相关产品推荐

