我试图创建一个方法来计算列的平均值,然后将答案放在另一个数组中。所以我通过2个阵列并且什么也没发送。我的问题在于我得到的数字很远。我知道它看起来很小,但请看看它:
public static void columnAverages(double [][] matrix1, double [][] matrix2)
{
double sum;
for (int c = 1; c < matrix1[0].length; c++){
sum = 0;
for (int r = 0; r < matrix1.length; r++){
sum = sum + matrix1[r][c];
matrix2[2][r]=sum/matrix1[0].length;
}
}
}
这是我非常原始的结果
Student test1 test2 test3 average
1.00 98.00 95.00 97.00 96.67
2.00 97.00 96.00 96.00 96.33
3.00 94.00 98.00 98.00 96.67
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
19.33 38.60 57.93 0.00
heres how I want the last table to look
lowest 0.00 0.00 0.00 0.00
highest 0.00 0.00 0.00 0.00
test averages go here 0.00 0.00 0.00 0.00(average of all the averages)
我从main调用此方法:
public static void main(String[] args){
Scanner kb = new Scanner(System.in);
System.out.println("How many students are there?");
int students=kb.nextInt();
double [][] grades= new double [students][5];
double [][] averages= new double [3][5];
getScores(grades);
rowAverage(grades);
System.out.printf("%10s","Student");
printArray(grades);
columnAverages(grades, averages);
System.out.println(); printArray(averages);
kb.close();
}
非常感谢任何帮助。我已经坚持这么久了。
答案 0 :(得分:1)
你的问题在这里:
matrix2[2][r] = sum / matrix1[0].length;
应该是:
matrix2[2][c] = sum / matrix1.length;
<强>更新强> 不要忘记将线放在环路外面!