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