0

以前的方法構造並填充用戶輸入定義大小的2D雙數組。 computeCategoryAverages獲取中間索引,對它們進行平均,然後將它們放入最終索引 然後computeOverallAverage應該將0索引(權重)乘以最終索引 並存儲該數字,然後重複,直到行結束,每次添加。如何乘以二維數組的列? Java

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; 
} 
+0

您的computeoverallaverage的輸出是什麼? – 2014-11-21 02:30:50

+0

computeOverallAverage的輸出應該是每行的權重列乘平均值列的總和。請參閱下表中的計算示例。 – Evan 2014-11-21 02:54:36

回答

0

您在computeOverAllAverage

遠程指數環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; 

    }