如何乘以2D数组的列? Java的

时间:2014-11-21 02:22:32

标签: java for-loop average multidimensional-array weighted-average

以前的方法构造并填充具有用户输入定义的大小的2D双精度数组。 computeCategoryAverages获取中间索引,对它们求平均值,然后将它们放在最终索引中 然后,computeOverallAverage应该将0索引(权重)乘以最终索引 并存储该数字,然后重复直到行结束,每次添加。

   Weight  Grade1  Grade2  Grade3  Average
  ----------------------------------------
1| 3.0  456.0  4356.0  456.0    1756.0  
2| 4.0  3456.0 674.0  34534.0  12888.0
3| 2.0  236.0  791.0   536.0    521.0

Example of what computeOverallAverage is supposed to do:
3.0 * 1756.0 = 5268
4 * 12888.0 = 51552
5268 + 51552= 56820
2 * 521= 1042
56820 + 1042 = 57862

computeCategoryAverages可以完美运行。

public static double[][] computeCategoryAverages(double[][] scoreArray){
    for(int i = 0; i < scoreArray.length; i++){
        double sum = 0;
        int numOfAssign = 0;
        double average=0.0;
        System.out.printf("The Average for category:%d:",i+1);
        System.out.println();
        for(int j = 1; j < scoreArray[i].length-1; j++){
            numOfAssign++;
            sum = sum + scoreArray[i][j];
        }
        average = sum / numOfAssign;
        scoreArray[i][scoreArray[i].length-1] = average;  
    }    
    return scoreArray;
}

我遇到的问题是computeOverallAverage,我不确定如何制作数组 正确地使用循环来乘以列并将它们与additiion复合。

// Compute the overall average
public static double computeOverallAverage(double[][] scoreArray){
    double currentAverage = 0;
    for(int i = 0; i < scoreArray[i].length-1; i++){
        //(weightedAverage = average *weight);
        double wAverage = scoreArray[i][scoreArray[i].length-1] * scoreArray[i][0];
        currentAverage += wAverage;

    }
    return currentAverage;
}

1 个答案:

答案 0 :(得分:0)

computeOverAllAverage

中的for循环中

远程索引scoreArray[i].length

scoreArray.length =行长 scoreArray[i].length =列长

在你的for循环中

你要为行循环。

 for(int i = 0; i < scoreArray.length-1; i++){
        //(weightedAverage = average *weight);
        double wAverage = scoreArray[i][scoreArray[i].length-1] * scoreArray[i][0];
        currentAverage += wAverage;

    }