簡體   English   中英

if語句和for循環中的ArrayList問題

[英]problems with ArrayList in if-statement and for-loop

我有關於for循環和ArrayList的問題。 我有一個帶字符串和整數的HashMap,其中String表示一個類,Integer表示成績。 他們在ArrayList中有一組學生。 所以我要做的是找到ArrayList中學生成績的平均值。 這是該類的代碼:

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;
     }
  } 
}

我知道if語句中的for循環中的bs.values是錯誤的,但我已經嘗試使用谷歌搜索我應該使用的內容,並且.contains或.size都不起作用。

哦,我還有另一個名為BachelorStudent的課程,在那里我可以創建一個BachelorStudent的對象,它將放在Bachelorstudenter的ArrayList中。

有人知道我需要放在那里嗎?

你做的是遞歸地以異常結束....

你必須做::

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

並將getSomething定義為類Bachelorstudent中字段的getter

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

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?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM