繁体   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