ArrayList 在 if 语句和 for 循环中的问题

problems with ArrayList in if-statement and for-loop

我有一个关于 for 循环和 ArrayList 的问题。我有一个包含字符串和整数的 HashMap,其中字符串表示 class,整数表示成绩。他们在 ArrayList 中有一组学生。所以我要做的是在 ArrayList 中找到学生成绩的平均值。这是 class 的代码:

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 都不起作用。

哦,我还有一个 class 叫做 BachelorStudent,我可以在其中创建 BachelorStudent 的对象,并将其放入 Bachelorstudenter 的 ArrayList 中。

有谁知道我需要把什么放在那里?

你所做的是递归地以异常结束....

你必须做::

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

并将 getSomething 定义为课程 Bachelorstudent

中字段的 getter

如果您想return所有学生的平均成绩的平均值,您可以执行以下操作:

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 valuesumgjennomsnitt 更改为 double,因为平均值也可能是非整数值。 答案还假设 b.finnGjennomsnitt() return 是所有 class 学生就读的平均值,而 return 就是这个。如果你只想 return 一个 class 中所有学生的平均值,答案不会给你这个。请在您的问题中说明,如果这是问题的一部分,还包括 finnGjennomsnitt() 的代码。 如果没有学生,答案中的方法将 return 6.0 作为平均值,如问题中的代码所示。或许应该重新考虑这一点,因为这使得一组成绩为 6.0 的特殊学生等同于没有学生的情况。也许你可以在没有学生的时候return-1?