替换二维数组中的一行
replacing a row in a 2D array
我有以下两个数组:
int [][]nums={{1,2,3},{4,5,6},{7,8,9}};
int []sums= {44,45,46};
我想用 44 45 46 的总和替换 7 8 9 的数字。这就是我目前正在做的事情:
for(int i=0; i<sums.length; i++){
for(int j=0 ; j< nums[2].length; j++){
nums[2][j]=sums[i];
}
}
然而,这使得 nums[2]={46,46,46}
有人可以指导我做错了什么吗?
在这种情况下您不需要嵌套循环。你可以这样做:
for (int i = 0; i < sums.length; i++) {
nums[2][i] = sums[i];
}
或者你可以直接赋值而不用循环:
int[][] nums = {{1,2,3}, {4,5,6}, {7,8,9}};
int[] sums = {44,45,46};
nums[2] = sums;
System.out.println(Arrays.deepToString(nums));
输出:
[[1, 2, 3], [4, 5, 6], [44, 45, 46]]
不同之处在于第一个解决方案会将元素从 sums
复制到 nums[2]
,而第二个解决方案将使 nums[2]
引用与 sums
相同的对象.因此,如果您选择第二个选项并稍后更改 sums
,则 nums[2]
也会更改。
我有以下两个数组:
int [][]nums={{1,2,3},{4,5,6},{7,8,9}};
int []sums= {44,45,46};
我想用 44 45 46 的总和替换 7 8 9 的数字。这就是我目前正在做的事情:
for(int i=0; i<sums.length; i++){
for(int j=0 ; j< nums[2].length; j++){
nums[2][j]=sums[i];
}
}
然而,这使得 nums[2]={46,46,46} 有人可以指导我做错了什么吗?
在这种情况下您不需要嵌套循环。你可以这样做:
for (int i = 0; i < sums.length; i++) {
nums[2][i] = sums[i];
}
或者你可以直接赋值而不用循环:
int[][] nums = {{1,2,3}, {4,5,6}, {7,8,9}};
int[] sums = {44,45,46};
nums[2] = sums;
System.out.println(Arrays.deepToString(nums));
输出:
[[1, 2, 3], [4, 5, 6], [44, 45, 46]]
不同之处在于第一个解决方案会将元素从 sums
复制到 nums[2]
,而第二个解决方案将使 nums[2]
引用与 sums
相同的对象.因此,如果您选择第二个选项并稍后更改 sums
,则 nums[2]
也会更改。