猿问

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


运行到最后一列显示越界。。

/*

 * 需求:键盘录入一个三行四列的矩阵,并求出每列数据的和

 * 例子: {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; 

}

}


健少Kim_03723867
浏览 2110回答 4
4回答

211103

你的两个for循环写错了,你要搞清楚二维数组怎么取数据。首先你把行取出来for(int x;x<sumColumn.length;x++)然后把每行的元素取出来for(int y=0;y<sumColumn[x].length;y++)这样才可以。你要理解sumColumn[x]的意思是取出第x行数组的长度。你的那个明显第一次去了第一行的长度,结果又给一个限制小于他有几行,这么写肯定错啊。

JustWannaHugU

精简版的答案、同学你的for循环嵌套的不对劲。想一下,三行四列的数组,是不是应该控制行数(也就是外层循环是行),进行依次每列求和呢?(同一行的不同列累次相加)在纸上画画好一些,刚学都这样!加油加油
随时随地看视频慕课网APP

相关分类

Java
我要回答