为了账号安全,请及时绑定邮箱和手机立即绑定

请问这段代码问题在哪?数组的

请问这段代码问题在哪?数组的

健少Kim_03723867 2016-08-01 22:53:01
运行到最后一列显示越界。。/* * 需求:键盘录入一个三行四列的矩阵,并求出每列数据的和 * 例子: {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行数组的长度。你的那个明显第一次去了第一行的长度,结果又给一个限制小于他有几行,这么写肯定错啊。

查看完整回答
1 反对 回复 2016-08-02
?
JustWannaHugU

TA贡献452条经验 获得超796个赞

精简版的答案、同学你的for循环嵌套的不对劲。
想一下,三行四列的数组,是不是应该控制行数(也就是外层循环是行),进行依次每列求和呢?(同一行的不同列累次相加)

在纸上画画好一些,刚学都这样!
加油加油

查看完整回答
反对 回复 2016-08-02
  • 4 回答
  • 0 关注
  • 2109 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信