我应该创建一个打印主列中给定列的总和的方法。该程序显示以下编译错误:错误Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3at algproo2.ALGPROO2.sumColumn(ALGPROO2.java:29)at algproo2.ALGPROO2.main(ALGPROO2.java:24)Java 结果:1我应该怎么办?public class ALGPROO2 { public static void main(String[] args) { int[][] a = { {-5,-2,-3,7}, {1,-5,-2,2}, {1,-2,3,-4} }; System.out.println(sumColumn(a,1)); //should print -9 System.out.println(sumColumn(a,3)); //should print 5 } public static int sumColumn(int[][] array, int column) { int sumn = 0; int coluna [] = array[column]; for (int value : coluna ) { sumn += value; } return sumn; }}
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
当你这样做时int coluna [] = array[column];,你实际上得到的是一行,而不是列。例如:
这样做array[1]会给你这个数组:
{1,-5,-2,2}
因此,这样做array[3]会给你一个错误,因为没有第 4 行/第 4 个数组(因为数组从 0 开始)。相反,您需要遍历您的行(即行数为array.length)。然后在每一行,您可以访问该特定列的值:
public static int sumColumn(int[][] array, int column) {
int sumn = 0;
for(int i = 0; i < array.length; i++) {
int row[] = array[i]; // get the row
int numFromCol = row[column]; // get the value at the column from the given row
sumn += numFromCol; // add the value to the total sum
}
return sumn; // return the sum
}
添加回答
举报
0/150
提交
取消