2017-02-28 86 views
1

我有一個關於for-loop和ArrayList的問題。我有一個帶有String和Integers的HashMap,其中String表示一個類,Integer表示等級。他們有一個ArrayList中的學生集合。所以我想要做的是找到ArrayList中學生成績的平均值。這是一個類的代碼:ArrayList在if語句和for循環中的問題

import java.util.ArrayList; 

public class BachelorStudenter { 

    private ArrayList<BachelorStudent> bs; 

    public Bachelorstudenter() {  
     bs = new ArrayList<>(); 
    } 

    public int bsGjennomsnitt() {  
    int sum = 0; 
    int gjennomsnitt = 0; 

    if(!bs.isEmpty()){ 
     for(BachelorStudent b : bs.values){ 
      sum += b.finnGjennomsnitt(); 
     } 
     return gjennomsnitt; 
    }else {   
     return 6; 
    } 
    } 
} 

我知道,在bs.values for循環的if語句中是錯誤的,但我試着用搜索引擎什麼,我應該使用,既不。包含或.size作品。

哦,我還有另一個叫做BachelorStudent的班級,我可以在這裏創建一個學士學位的對象,並將它放入Bachelorstudenter的ArrayList中。

有誰知道我需要放在那裏嗎?

+3

'for(Bachelorstudent b:bs){' –

+1

此外,'gjennomsnitt'返回,但從未修改,據我們所知。 –

回答

0

如果你想要返回所有學生的平均成績的平均值,你可以做以下事情:

import java.util.ArrayList; 
public class Bachelorstudenter { 

    private ArrayList<Bachelorstudent> bs; 

    public Bachelorstudenter() {  
     bs = new ArrayList<>(); 
    } 

    public double bsGjennomsnitt() {  
     double sum = 0.0; 
     double gjennomsnitt = 6.0; 

     if(!bs.isEmpty()){ 
      for(Bachelorstudent b : bs){ 
       sum += b.finnGjennomsnitt(); 
      } 
      gjennomsnitt = sum/bs.size() 
     } 
     return gjennomsnitt; 
    } 
} 

請注意,我改變了return valuesumgjennomsnittdouble作爲平均也可以是一個非整數值。 答案還假設b.finnGjennomsnitt()返回一個學生參加的所有班級的平均值,並返回此值。如果你只想返回一個班的所有學生的平均水平,答案不會給你這個。如果這是問題的一部分,請在您的問題中指定幷包含finnGjennomsnitt()的代碼。 如果沒有學生,答案中的方法將平均返回6.0,如問題中的代碼所示。也許應該重新考慮這個問題,因爲它讓一個例外的學生組的成績達到6.0分,與沒有學生的情況相同。也許你沒有學生時可以返回-1。

0

什麼你做的是一個異常遞歸結束....

你要做::

for(Bachelorstudent b : bs){ 
    sum += b.getSomething(); 
} 

,並定義getSomething作爲班組長一個字段一個getter Bachelorstudent