写下方法:
public int sumRow(int[][] matrix, int row)
将二维数组中的行row
相加,称为矩阵。
假设:
public void run()
{
System.out.println(sumRow(new int[][]{{70,93,68,78,83},{68,89,91,93,72},{98,68,69,79,88}}, 2));
System.out.println(sumRow(new int[][]{{1,1,1}, {2,2,2}, {3,3,3}}, 0));
System.out.println(sumRow(new int[][]{{2,4,6,8,10}, {1,2,3,4,5}, {10,20,30,40,50}}, 2));
}
到目前为止,我有:
public int sumRow(int[][] matrix, int row)
{
int sum = 0;
for(int i = 0; i < matrix.length; i++)
{
for(int j = 0; j < matrix.length; j++)
{
sum = sum + matrix[j][i];
}
}
return sum;
}
我得到的输出是714,18和78,它们应该是402,3和150.我做错了什么?
答案 0 :(得分:5)
当您被要求对2D数组中的特定行求和时,您当前正在尝试对2D数组中的所有元素求和。在这种情况下,您只需要一个for循环来遍历单个行,就像遍历单个数组一样。循环将从第一个元素int row = matrix.length;
开始,一直运行到最后一个元素int col = matrix[0].length;
,因为matrix[row][0]
是矩阵特定行中的列/元素数。因此,matrix[row][matrix[row].length - 1]
将是matrix[row].length
中最后一个元素的索引。这是它应该是什么样子,
matrix[row].length - 1
答案 1 :(得分:1)
Feed
<强> HINT 强>
行的长度:
feed: {
id: 123,
feed_tracks: [
{
id: 123,
current: true
},
{
id: 456,
current: true
}
]
}
列的长度:
public int sumRow(int[][] matrix, int row)
{
int sum = 0;
int colSize = matrix[row].length;
for(int j = 0; j < colSize; j++){
sum += matrix[row][j];
}
return sum;
}
答案 2 :(得分:0)
在内部循环中,将条件修改为:
for(int j = 0; j < matrix[i].length; j++)
然后在总和
中切换i
和j
答案 3 :(得分:0)
第二个for
循环条件存在问题,matrix.length
是第一维的长度,第二维看起来像matrix[i].length
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[i].length; j++){
sum = sum + matrix[i][j];
}
}
我更喜欢使用sum+=matrix[i][j]
代替sum = sum + matrix[i][j]
计算一个行:
for(int j = 0; j < matrix[row].length; j++){
sum = sum + matrix[row][j];
}
只是注意该行的范围是从0
到matrix.length-1
答案 4 :(得分:0)
使用Java Streams可以非常优雅地完成:
public static int sumRow2(int[][] matrix, int row) {
return Arrays.stream(matrix[row]).sum();
}
答案 5 :(得分:-1)
您需要为j。
引用数组的第二个维度//ex: first dimension is matrix.length
//second dimension is matrix[any index in the first dimension].length
//and this cycle would continue with more and more [num] on the end
public int sumRow(int[][] matrix, int row)
{
int sum = 0;
for(int i = 0; i < matrix.length; i++)
{
for(int j = 0; j < matrix**[0]**.length; j++)
{
sum = sum + matrix[j][i];
}
}
return sum;
}