我有一个关于for循环和ArrayList的问题.我有一个带有字符串和整数的HashMap,其中字符串表示一个类,而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的一个对象,并将它放在ArrayList中。
有人知道我需要把什么放在那里吗?
发布于 2017-02-28 16:46:14
如果您想返回所有学生的平均成绩,您可以这样做:
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分的特殊学生的情况等同于没有学生的情况。也许你能返回-当没有学生的时候?
发布于 2017-02-28 16:05:36
你所做的是递归地以一个例外结束.
你必须这样做:
for(Bachelorstudent b : bs){
sum += b.getSomething();
}并将getSomething定义为类getSomething中字段的getter。
https://stackoverflow.com/questions/42513460
复制相似问题