ArrayList 在 if 语句和 for 循环中的问题
problems with ArrayList in if-statement and for-loop
我有一个关于 for 循环和 ArrayList 的问题。我有一个包含字符串和整数的 HashMap,其中字符串表示 class,整数表示成绩。他们在 ArrayList 中有一组学生。所以我要做的是在 ArrayList 中找到学生成绩的平均值。这是 class 的代码:
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 都不起作用。
哦,我还有一个 class 叫做 BachelorStudent,我可以在其中创建 BachelorStudent 的对象,并将其放入 Bachelorstudenter 的 ArrayList 中。
有谁知道我需要把什么放在那里?
你所做的是递归地以异常结束....
你必须做::
for(Bachelorstudent b : bs){
sum += b.getSomething();
}
并将 getSomething 定义为课程 Bachelorstudent
中字段的 getter
如果您想return所有学生的平均成绩的平均值,您可以执行以下操作:
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()
return 是所有 class 学生就读的平均值,而 return 就是这个。如果你只想 return 一个 class 中所有学生的平均值,答案不会给你这个。请在您的问题中说明,如果这是问题的一部分,还包括 finnGjennomsnitt()
的代码。
如果没有学生,答案中的方法将 return 6.0 作为平均值,如问题中的代码所示。或许应该重新考虑这一点,因为这使得一组成绩为 6.0 的特殊学生等同于没有学生的情况。也许你可以在没有学生的时候return-1?
我有一个关于 for 循环和 ArrayList 的问题。我有一个包含字符串和整数的 HashMap,其中字符串表示 class,整数表示成绩。他们在 ArrayList 中有一组学生。所以我要做的是在 ArrayList 中找到学生成绩的平均值。这是 class 的代码:
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 都不起作用。
哦,我还有一个 class 叫做 BachelorStudent,我可以在其中创建 BachelorStudent 的对象,并将其放入 Bachelorstudenter 的 ArrayList 中。
有谁知道我需要把什么放在那里?
你所做的是递归地以异常结束....
你必须做::
for(Bachelorstudent b : bs){
sum += b.getSomething();
}
并将 getSomething 定义为课程 Bachelorstudent
中字段的 getter如果您想return所有学生的平均成绩的平均值,您可以执行以下操作:
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()
return 是所有 class 学生就读的平均值,而 return 就是这个。如果你只想 return 一个 class 中所有学生的平均值,答案不会给你这个。请在您的问题中说明,如果这是问题的一部分,还包括 finnGjennomsnitt()
的代码。
如果没有学生,答案中的方法将 return 6.0 作为平均值,如问题中的代码所示。或许应该重新考虑这一点,因为这使得一组成绩为 6.0 的特殊学生等同于没有学生的情况。也许你可以在没有学生的时候return-1?