我正在尝试完成一个AP CS FRQ问题 . 我写了代码,但它不起作用 . 我搞砸了哪里?
编写一个静态方法rowSums,它计算给定二维数组中每一行的总和,并在一维数组中返回这些总和 . 该方法有一个参数,一个int值的二维数组arr2D . 该数组按行主顺序排列:arr2D [r] [c]是行r和列c的条目 . 该方法返回一维数组,其中arr2D的每一行都有一个条目,这样每个条目就是arr2D中相应行的总和 . 提醒一下,二维数组的每一行都是一维数组 .
` public static int[] rowSums(int[][] arr2D){
int total2 = 0;
int a[] = new int[arr2D.length];
for(int x=0; x<arr2D.length; x++){
for(int n=0; n<arr2D[x].length;n++){
arr2D[x][n] = total2;
a[x] = a[x] + total2;
}
}
return a;
}`
4 回答
您的任务是向后的,您应该使用以下方法存储2D数组的每个元素:
不是这个:
完整代码:
您需要在外部循环中重置
total2
,并在内部循环结束后设置该值如果
total2
不会被重复使用,可以缩短为arr2D [x] [n] = total2; //你为0分配给arr2D [x] [n]
将其改为total2 = arr2D [x] [n];
它会工作!!
编写好的代码包括良好的注释和良好的变量名称选择 . 让我们首先开始逐行评论您的代码,这样您就可以更好地了解正在发生的事情:
永远不会设置
Total2
好的,所以希望你的一条线路向后更清晰(你有一些糟糕的变量命名选择) . 更好的东西看起来更像这样:
由于变量现在更加清晰,我们可以将冗余注释删除为: