以前的方法构造并填充具有用户输入定义的大小的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;
}
答案 0 :(得分:0)
computeOverAllAverage
中的for循环中
远程索引scoreArray[i].length
scoreArray.length
=行长
scoreArray[i].length
=列长
你要为行循环。
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;
}