2013-04-28 60 views
-1

我正在使用此代碼以及生成隨機數字以填充學生ID和測驗分數的陣列的方法。接下來我想找出所有測驗分數的平均/最小/最大值。我很困難。任何和所有的幫助表示讚賞。如何獲取java中數組第二維的所有值的平均值?

private class FillButtonListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     int quizScore, firstIDin = firstID, row, column; 
     int[] studentIDsin = new int[numberStudents]; 
     int[][] quizin = new int[numberStudents][numberQuizes]; 

     for(row=0; row<numberStudents; row++) { 
      studentIDsin[row] = firstIDin; 
      firstIDin+=1; 
     } 
     for(row=0; row<numberStudents; row++) { 
      studentIDs[row] = studentIDsin[row]; 
     } 
     for(row=0; row<numberStudents; row++) { 
      for(column=0; column<numberQuizes;column++) { 
       quizScore = (int) rand(); 
       quizin[row][column]= quizScore; 
      } 
     } 
     for(row=0; row<numberStudents; row++) { 
      for(column=0; column<numberQuizes;column++) 
       quiz[row][column]= quizin[row][column]; 
     } 
     dispResultsMenuPriv.setEnabled(true); 
    } 

}

+0

我不太清楚你試圖在這裏。這只是一個測試場景嗎?或者你是否希望在「真正的」測驗中工作......即一名學生提交一個分數,計算他們的新平均分,最小和最大值? – Slihp 2013-04-28 06:17:52

+0

這只是一個測試場景。 – Snacks 2013-04-28 18:36:00

+0

感謝您的建議。對此,我真的非常感激。 – Snacks 2013-04-28 18:36:22

回答

0
for(row=0; row<numberStudents; row++) { 
    int min = 0, max = 0; 
    float average = 0.0f; 
    for(column=0; column<numberQuizes;column++) { 
     average += quizin[row][column]; 
     min = (quizin[row][column] < min) ? quizin[row][column] : min; 
     max = (quizin[row][column] > max) ? quizin[row][column] : max; 
    } 
    average = average/numberQuizzes; 
} 

使用此代碼,你可以很容易地找到最小值,最大值和所有測驗分數爲每個學生的平均水平。

+0

如果我想查找所有學生測驗的平均/最小/最大值,該怎麼辦? – Snacks 2013-04-28 20:10:54

+0

然後在第一個for循環之外定義min,max。另外,在第一個for循環之外定義一個新變量sumOfAverages作爲float。然後,對於每個學生,由於他們的平均值正在計算,請將該平均值添加到sumOfAverage。最後,將學生平均數除以數字學生,以獲得所有學生的平均數,而不是主循環之外。 – 2013-06-10 19:43:49

0

試試這個

double[] avg = new double[numberQuizes]; 
    int[] min = new int[numberQuizes]; 
    int[] max = new int[numberQuizes]; 

    // for each student 
    for (int[] a : quizin) { 
     for (int i = 0; i < numberQuizes; i++) { 
      int score = a[i]; 
      avg[i] += score; 
      if (min[i] > score) { 
       min[i] = score; 
      } 
      if (max[i] < score) { 
       max[i] = score; 
      } 
     } 
    } 
    for (int i = 0; i < numberQuizes; i++) { 
     avg[i] /= numberStudents; 
    } 
相關問題