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

时间:2017-02-28 16:02:23

标签: java if-statement for-loop arraylist bluej

我有关于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是错误的,但是我已经尝试使用google搜索我应该使用的内容,并且.contains或.size都不起作用。

哦,我还有另一个名为BachelorStudent的课程,在那里我可以创建一个BachelorStudent的对象,它将被放入Bachelorstudenter的ArrayList中。

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

2 个答案:

答案 0 :(得分:0)

你做的是以异常方式递归结束......

你必须做::

var agents = db.AllAgentLocations()
    .AsEnumerable()
    .Where(al => al.PrimaryOffice)
    .Select(al => new AgentDistanceViewModel {
        Agent = al.Agent,
        Distance = searchCoords.GetDistanceTo(
            new GeoCoordinate {
                Latitude = double.Parse(al.Location.Latitude),
                Longitude = double.Parse(al.Location.Longitude)
            }
        ) / 1609.34
    })
    .Where(dvm => 25 >= dvm.Distance)
    // ...

并将 getSomething 定义为类中字段的getter Bachelorstudent

答案 1 :(得分: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 valuesumgjennomsnitt更改为double,因为平均值也可能是非整数值。 答案还假设b.finnGjennomsnitt()返回学生参加的所有课程的平均值并返回此平均值。如果你只想返回一个班级所有学生的平均分,答案就不会给你这个。如果这是问题的一部分,请在您的问题中指明并包含finnGjennomsnitt()的代码。 如果没有学生,答案中的方法将返回6.0作为平均值,如问题中的代码。也许这应该被重新考虑,因为它使一个特殊的学生群体的直接6.0等级的情况等于没有学生的情况。也许你可以在没有学生时返回-1?