运行到最后一列显示越界。。/* * 需求:键盘录入一个三行四列的矩阵,并求出每列数据的和 * 例子: {1.5,2,3,4} * {5.5,6,7,8} * {9.5,1,3,1} */import java.util.Scanner;class sumColumn3{ public static void main(String[] args){ //定义一个二维数组 double[][] sumColumn=new double[3][4]; Scanner sc=new Scanner(System.in); for(int y=0;y<sumColumn[0].length;y++){ for(int x=0;x<sumColumn.length;x++){ System.out.print("请输入第"+(y+1)+"列的第"+(x+1)+"个数据:"); sumColumn[y][x]=sc.nextDouble(); } System.out.println("第"+(y+1)+"列的和是:"+getsum(sumColumn,y)); System.out.println(); } } public static double getsum(double[][]m,int columnIndex){ double sum=0; for(int y=0;y<m[columnIndex].length;y++){ sum+=m[columnIndex][y]; } return sum; } }
4 回答
211103
TA贡献20条经验 获得超11个赞
你的两个for循环写错了,你要搞清楚二维数组怎么取数据。首先你把行取出来for(int x;x<sumColumn.length;x++)
然后把每行的元素取出来for(int y=0;y<sumColumn[x].length;y++)这样才可以。你要理解sumColumn[x]的意思是取出第x行数组的长度。你的那个明显第一次去了第一行的长度,结果又给一个限制小于他有几行,这么写肯定错啊。
JustWannaHugU
TA贡献452条经验 获得超796个赞
精简版的答案、同学你的for循环嵌套的不对劲。
想一下,三行四列的数组,是不是应该控制行数(也就是外层循环是行),进行依次每列求和呢?(同一行的不同列累次相加)
在纸上画画好一些,刚学都这样!
加油加油
添加回答
举报
0/150
提交
取消