Java 尝试查找2d数组中每行的平均值
这里我要做的是得到2D数组中每一行的平均值。当我希望第一排和雅达雅达的总数为100时,它只输出了总数780。。。。。。有人能给我指路吗Java 尝试查找2d数组中每行的平均值,java,Java,这里我要做的是得到2D数组中每一行的平均值。当我希望第一排和雅达雅达的总数为100时,它只输出了总数780。。。。。。有人能给我指路吗 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3 at ArrayHW.averageRow(ArrayHW.java:40) at ArrayHW.main(ArrayHW.java:10) public class ArrayHW { pub
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at ArrayHW.averageRow(ArrayHW.java:40)
at ArrayHW.main(ArrayHW.java:10)
public class ArrayHW {
public static void main(String[] args){
int [][] a2 = {{10,20,30,40},
{50, 60, 70 , 80},
{90, 100, 110, 120}};
display2DArray(a2);
System.out.println(average2DArray(a2));
System.out.println(min2DArray(a2));
System.out.println(averageRow(a2));
}
public static int display2DArray(int[][] a2) {
for (int row = 0; row < 3; row++){
for (int column = 0; column < 4; column++){
System.out.println(a2[row][column]);
}
}
return 0;
}
public static double average2DArray(int[][] a2) {
double sum = 0.0;
int count = 0;
for (int row = 0; row < a2.length; row++) {
for (int column = 0; column < a2[row].length; column++) {
sum += a2[row][column];
count++;
}
}
return sum / count;
}
public static double averageRow(int[][] a2) {
int rowTotal = 0;
double average = 0;
for (int row = 0; row < a2.length; row++){
for (int column = 0; column < a2[row].length; column++){
rowTotal += a2[row][column];
//average = rowTotal / a2[row].length;
}
}
return rowTotal;
}
线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:3
在ArrayHW.averageRow(ArrayHW.java:40)
在ArrayHW.main(ArrayHW.java:10)
公共类阵列{
公共静态void main(字符串[]args){
int[]a2={{10,20,30,40},
{50, 60, 70 , 80},
{90, 100, 110, 120}};
显示阵列(a2);
System.out.println(average2DArray(a2));
System.out.println(min2DArray(a2));
系统输出println(平均流(a2));
}
公共静态int-display2DArray(int[]a2){
对于(int行=0;行<3;行++){
for(int列=0;列<4;列++){
System.out.println(a2[行][列]);
}
}
返回0;
}
公共静态双平均2darray(int[]a2){
双和=0.0;
整数计数=0;
对于(int row=0;rowpublic static int display2DArray(int[][] a2) {
for (int row = 0; row < 3; row++){
for (int column = 0; column < 4; column++){
System.out.print(a2[row][column] + " "); // better display
}
System.out.println(); // better display
}
return 0;
}
因为您有多个行,并且希望返回其中每一行的一些计算,所以需要返回一个值数组 这意味着您需要创建一个数组,其中可以存储每行计算的结果。您还需要确保每行都使用一组新的值进行声明,例如
public static double[] averageRow(int[][] a2) {
double average[] = new double[a2.length];
for (int row = 0; row < a2.length; row++) {
int rowTotal = 0;
for (int column = 0; column < a2[row].length; column++) {
rowTotal += a2[row][column];
}
average[row] = rowTotal / a2[row].length;
}
return average;
}
将输出
[25.0,65.0,105.0]
首先将average=rowTotal/a2[row].length;
放在外循环的末尾(在内循环之后),但不要忘记在内循环每次迭代之前重置rowTotal
,第一行的平均值不是100,而是25
(100/4
)是的,它显示为100…那么,你想要行的平均值还是它的总数,因为现在我已经完全混淆了我想要每行的平均值。现在发生的是它的显示正确。除了105.0之后,它有0.0修改:System.out.println(averageRow(a2));
到:averageRow(a2);
-方法本身返回零,正在打印…感谢@alfasin向我展示并添加注释以帮助我理解。非常感谢现在对列执行此操作有何区别@alfasin@ThePyroMark这将是一个很好的练习,我建议你在找工作之前试着自己解决它有几种不同的方法,比如切换for循环的顺序;)
25.0
65.0
105.0
public static double[] averageRow(int[][] a2) {
double average[] = new double[a2.length];
for (int row = 0; row < a2.length; row++) {
int rowTotal = 0;
for (int column = 0; column < a2[row].length; column++) {
rowTotal += a2[row][column];
}
average[row] = rowTotal / a2[row].length;
}
return average;
}
int[][] a2 = {{10, 20, 30, 40},
{50, 60, 70, 80},
{90, 100, 110, 120}};
System.out.println(Arrays.toString(averageRow(a2)));