static double [][] initialArray = {{7.432, 8.541, 23.398, 3.981}, {721.859, 6.9211, 29.7505, 53.6483}, {87.901, 455.72, 91.567, 57.988}};
public double[] columnSum(double [][] array){
int index = 0;
double temp[] = new double[array[index].length];
for (int i = 0; i < array[i].length; i++){
double sum = 0;
for (int j = 0; j < array.length; j++){
sum += array[j][i];
}
temp[index] = sum;
System.out.println("Index is: " + index + " Sum is: "+sum);
index++;
}
return temp;
}
public static void main(String[] args) {
arrayq test = new arrayq();
test.columnSum(initialArray);
}
我想获取所有列的总和,但是我不断收到出站异常。这是我得到的输出:
Index is: 0 Sum is: 817.192
Index is: 1 Sum is: 471.18210000000005
Index is: 2 Sum is: 144.7155
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at NewExam.arrayq.columnSum(arrayq.java:11)
您的外部for循环条件给您带来了问题。这是您的循环:-
for (int i = 0; i < array[i].length; i++)
现在,当i
达到该值时3
,您正在尝试访问array[3].length
。这将引发IndexOutOfBounds
异常。
由于每个内部数组的大小都相同,因此可以 将循环更改为 :-
for (int i = 0; i < array[0].length; i++)
或者,甚至更好的是,只需array[0].length
事先存储一些变量。但这并没有太大的区别。
我还建议您使用更好的方法来计算列的总和。避免首先迭代行。保持迭代正常,大概是这样的:-
public double[] columnSum(double [][] array){
int size = array[0].length; // Replace it with the size of maximum length inner array
double temp[] = new double[size];
for (int i = 0; i < array.length; i++){
for (int j = 0; j < array[i].length; j++){
temp[j] += array[i][j]; // Note that, I am adding to `temp[j]`.
}
}
System.out.println(Arrays.toString(temp));
return temp; // Note you are not using this return value in the calling method
}
因此,您可以看到如何高度简化您的问题。我所做的是,不是将值分配给数组,而是将的新值添加array[i][j]
到的现有值上temp[j]
。于是,渐渐地,价值array[i][j]
为所有i's (rows)
被归纳起来temp[j]
。这样,您就不必使用混乱的迭代。因此,只需将上面的代码添加到您的方法中,然后删除旧的代码即可。
即使您拥有jagged-array
,即内部数组的大小不同,该方法也可以正常工作。但是只需记住temp
仔细定义数组的大小即可。
另请注意,我已使用Arrays.toString(temp)
方法打印数组。
问题内容: 我正在一个项目中,我必须读取文件并将内容输入2D数组。然后,我必须对每一行,每一列和矩阵的周长求和。到目前为止,除外围功能外,我一切正常。我正在尝试为两个外部列的顶行,底行和中间创建单独的for循环。 矩阵文件如下所示: 因此,周长总计应为42。现在,我可以成功地将第一行和最后一行添加为等于22。但是,当我将列添加到总数中时,我得到32。 这是代码: 如果有人可以帮助我将第一列和最后一
本文向大家介绍详解C++中的一维数组和二维数组,包括了详解C++中的一维数组和二维数组的使用技巧和注意事项,需要的朋友参考一下 C++一维数组 定义一维数组 定义一维数组的一般格式为: 类型标识符 数组名[常量表达式]; 例如: 它表示数组名为a,此数组为整型,有10个元素。 关于一维数组的几点说明: 1) 数组名定名规则和变量名相同,遵循标识符定名规则。 2) 用方括号括起来的常量表达
问题内容: 我对Swift中的2D数组感到非常困惑。让我逐步描述。如果我错了,请您纠正我。 首先; 空数组的声明: 其次,填充数组。(例如,i,j是for循环变量) 最后,在数组中编辑元素 问题答案: 定义可变数组 要么: 或者,如果您需要一个预定义大小的数组(如@ 0x7fffffff在评论中所述): 在位置更改元素 要么 更改子数组 要么 要么 如果在进行这些更改之前,您有3x2的数组,数组中
问题内容: 我想知道如何在Python中声明一个二维数组。 前两个任务工作正常。但是当我尝试做时,出现以下错误: 我在尝试声明二维数组时做任何愚蠢的事情吗? 编辑: 但是我不知道数组(行和列)中的元素数量。 问题答案: 您不会在Python中“声明”数组或其他任何东西。您只需分配一个(新)变量。如果要使用多维数组,只需添加一个新数组作为数组元素。 要么
当要把一个二维数组中各个数组的和加起来的时候,我已经黔驴技穷了。例如: 函数sumArray可以成功累加 我需要它能够返回另一个数组中有多少数组的总和。原因是因为我需要下一个函数来调用sumArray(): 理论上,sumSort()将根据每个数组中数字的总和对数组进行排序(从最高到最低)。 任何提示都会很棒。提前谢谢你!
我正在编写一个计算和绘制抛物线的小程序。但我在程序中有一小部分需要计算valuetable。 二次函数如下: