[英]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 value
, sum
和gjennomsnitt
为double
因为平均值也可能是非整数值。 答案还假设b.finnGjennomsnitt()
返回学生参加的所有课程的平均值并返回此值。 如果你只想返回一个班级所有学生的平均分,答案就不会给你这个。 如果这是问题的一部分,请在您的问题中指明并包括finnGjennomsnitt()
的代码。 如果没有学生,答案中的方法将返回6.0作为平均值,如问题中的代码。 也许这应该被重新考虑,因为它使一个特殊的学生群体的直接6.0等级的情况等于没有学生的情况。 也许你可以在没有学生时返回-1?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.