Java 尝试查找2d数组中每行的平均值

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

这里我要做的是得到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 {
    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;row对其中两种方法进行了几处更正。有关详细说明,请参阅代码注释:

public 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)));