2013-03-11 73 views
-1

所以我試圖做一個簡單的程序,它有一個模擬大學課程的數組。您可以將學生添加到課程中(稱爲IOOP),獲取姓名,地位,測驗分數,測驗平均數,期末考試平均數等。該數組將學生作爲其項目,其中一種方法稱爲printFinalExamDetails。我的教授希望我們不僅能夠顯示整個班級的平均期末考試成績(我已經編碼),還要顯示新生,大二,大三學生和老年人的平均期末考試分數。我的代碼看起來像現在這種權利:如何返回字符串數組列表中某些項目的數量?

public void printFinalExamDetails () { 
    double sum, counter; sum = 0; 
    for (Student x : students) 
    { 
     sum = sum + x.getFinalExamScore(); 
     counter = students.size(); 
     System.out.println (x.getFirstName() + " " + x.getLastName() + ": " + x.getFinalExamScore()); 
     System.out.println ("The average final exam score is: " + sum/counter + "."); 


     String standing = x.computeStanding(); 
     if(standing.equals("freshman")) 
     System.out.println ("The average final exam score for the freshmen is: " + sum/counter + "."); 


     if(standing.equals("sophomore")) 
     System.out.println("The average final exam score for the sophomore is: " + sum/counter + "."); 

     } 
} 

現在恐怕連連使用計數器將使用類的全尺寸,而不僅僅是大一/ sophs /大三/大四了,如果我用學生.size(),它將打印數組中的所有學生,而不僅僅是新生。任何人都可以給我一些關於如何編碼的提示嗎?謝謝!

+2

請正確格式化您的代碼。 – jrd1 2013-03-11 05:37:39

+0

'counter'的用途是什麼?這僅僅是一個班級人數的數字嗎?爲什麼不把它叫做classSize? – Thunderforge 2013-03-11 05:45:03

+1

你需要明白,班級的平均分數是所有學生的總分數/總數。的學生'。二年級的平均成績是所有二年級學生的總分/總數。二年級學生。新鮮者的平均得分是所有新鮮者的總得分/總數。新鮮'。嘗試基於此更新您的代碼。 – Kshitij 2013-03-11 05:56:05

回答

0

從我所瞭解的問題是,你有一個變量代表班級中的學生人數(counter,它可以使用更好的名字),你擔心因爲它是全班學生的總和,你將無法準確地爲只有某些排名的學生平均分數。

那麼,解決方案是迭代通過你的學生列表,並有多少新生,二年級等,你有或更改爲更好的數據結構,可以更容易地確定每個類。

由於這是一個作業問題,我不會給你代碼,但前者可以用簡單的for循環完成。只需循環所有學生,並計算出每個班級中有多少人。你可以總結自己的分數。

也許使用它的最有效的方法是將學生的數據結構更改爲HashMap。您可以將您的密鑰設置爲學生所在班級的字符串,然後將其作爲該班級中每個學生的ArrayList。這樣,您可以更輕鬆地獲得所需班級的學生,並能夠通過map.values().getSize()確定每個班級的學生人數。

+0

我似乎已經明白了。我的代碼可以在這裏看到:http://pastebin.com/YNSLQH4u 我測試了它,它的工作原理!感謝您的幫助:) – 2013-03-13 01:35:05

+0

很高興你明白了!請點擊此答案下方的複選框,將其選爲接受的答案。 – Thunderforge 2013-03-13 03:19:53

相關問題