我试图为2D数组中的每一列添加所有值,这些总和成为覆盖数组最后一行的值
例如:
4 5 6 7 8
1 2 3 4 5
0 0 0 0 0 //this row will be replaced by the sum of each column
4 5 6 7 8
1 2 3 4 5
5 7 9 11 13
public static void fillTotals(int[][] scores)
{
int count = 0;
for (int r = 0; r < scores.length - 1; r++)
{
scores[r][0] += count;
scores[scores.length - 1][scores[0].length - 1] = count;
}
}
我以为我可以保持列相同并将其添加到更改的行但是它不会重写最后一行。另外,我不知道如何更改底部的值
答案 0 :(得分:0)
嗯,没有更新任何内容的原因是你永远不会改变count
,所以你最终只能为所有内容添加0。我想你想要的而不是:
scores[r][0] += count;
是:
count += scores[r][0];
那种计数将包含第一列中每个元素的总和。
要明确,scores[r][0] += count;
与scores[r][0] = scores[r][0] + count;
相同,而我认为您可能需要count = scores[r][0] + count;
话虽如此,我仍然非常确定这段代码实际上不会起作用(对不起),因为你实际上只是对第一列的值进行求和。然而,为了不仅仅是为了你的学校作业,我只是想把它留在那里。如果你仍然被卡住,请告诉我,我会尽力帮助你!
答案 1 :(得分:0)
您需要在所有行和列上迭代一次,实际迭代所有行,每列。如果您假设每行的列数相同,则可以使用z = y ** (1/x)
作为固定值。
scores[0].length
这假设2D数组的最后一行不是和的一部分,并且可以用每列的所有先前值的总和覆盖。