[英]Adding each column inside a Jagged array not working
我最近一直在使用2D和锯齿状数组,正在尝试添加行中的每个元素和列中的每个元素。 我得到了打印出每一行总和的代码,但是在添加数组中的每一列时遇到了困难。
注意:我尝试做sum += numbers[c][r];
但它不起作用
import java.util.Arrays;
import java.io.*;
public class Homework{
public static void main(String[] args) {
int[][] numbers = { {3, 2, 5,},
{1, 4, 4, 8, 13},
{9, 1, 0, 2},
{0, 2, 6, 3, -1, -8} };
//Adding each row in the array
int sum = 0;
for(int r = 0; r < numbers.length; r++) {
sum = 0;
for(int c = 0; c < numbers[r].length; c++) {
sum += numbers[r][c];
}
System.out.println("Sum of row: " + sum);
}
//Adding each column in the row
int sum2 = 0;
for(int r = 0; r < numbers.length; r++) {
sum2 = 0;
for(int c = 0; c < numbers[r].length; c++) {
sum2 += numbers[c][r];
}
System.out.println("Sum of column: " + sum2);
}
}
}
好的,您的步伐正确。 在进入代码之前,让我解释一下思维方式。
您有一个非正方形的2d数组,并且想要每行和每一列的总计。 行很简单,您已经完成了。 列要困难一点,因为由于列是非正方形的,所以您将遇到ArrayOutOfBoundsExceptions
因为它试图访问不存在的数组。
为了解决这个问题,您需要知道最大列数,然后遍历数组。 但是,您还需要注意ArrayOutOfBoundsException
,确保考虑到当前列迭代何时大于行长度。
我向您的行总和部分添加了一个int max
,这样,我就不必多次遍历相同的信息。
之后,我将c < numbers[r].length
替换为'max',因为我们需要遍历X列。
然后,我遍历行,因为它们是统一的,并且很容易通过numbers.length
找到。
因此,对代码进行简单的更改即可产生所需的结果。 见下文。
int[][] numbers = {
{3, 2, 5},
{1, 4, 4, 8, 13},
{9, 1, 0, 2},
{0, 2, 6, 3, -1, -8}
};
int max = 0;
//Adding each row in the array
int sum;
for(int r = 0; r < numbers.length; r++) {
sum = 0;
for(int c = 0; c < numbers[r].length; c++) {
sum += numbers[r][c];
if(numbers[r].length > max){
max = numbers[r].length;
}
}
System.out.println("Sum of row: " + sum);
}
System.out.println("Max " + max);
//Adding each column in the row
int sum2;
for(int c = 0; c < max; c++) {
sum2 = 0;
for(int y = 0; y < numbers.length; y++){
if(numbers[y].length > c){
sum2 += numbers[y][c];
System.out.println(numbers[y][c]);
}
}
System.out.println("Sum of column: " + sum2);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.