我正在尝试创建一个计算平均值的函数,但我一直收到一条错误信息,这真是令人沮丧,因为我知道这是一个超级简单的功能。我一直收到错误java.lang.IndexOutOfBoundsException,所以我知道它与索引错误有关,但我无法弄明白。
public int berekenGemiddeldeScore(){
int result = 0;
int i = 0;
if (deelnemers.size() == 1){
return deelnemers.get(1).getScore();
}
while (i< deelnemers.size() -1 ){
result+=deelnemers.get(i).getScore();
i++;
}
return result/deelnemers.size();
}
答案 0 :(得分:0)
在Java和许多其他语言中,第一个索引是0
,而不是1
。在您的情况下,集合的大小为1,因此您可以使用get
访问的唯一索引是0
:deelnemers.get(0)
。
如果尝试使用集合中不存在的索引进行访问,则会抛出类型IndexOutOfBoundsException
的异常。
答案 1 :(得分:0)
用此代码替换您的代码 -
public int berekenGemiddeldeScore(){
int result = 0;
int i = 0;
if (deelnemers.size() == 1){
return deelnemers.get(0).getScore();
}
while (i < deelnemers.size()){
result+=deelnemers.get(i).getScore();
i++;
}
return result/deelnemers.size();
}
答案 2 :(得分:0)
如果您的数组只有一个项目,“if (deelnemers.size() == 1)
”数组的索引为0:
return deelnemers.get(0).getScore();
答案 3 :(得分:0)
这就是问题
if (deelnemers.size() == 1) {
return deelnemers.get(1).getScore();
}
将return语句替换为
return deelnemers.get(0).getScore();
编辑
如果列表大小为1,则没有理由遇到特殊情况。 想想这种方法
public int berekenGemiddeldeScore() {
if (deelnemers.size() == 0) {
return 0;
}
int result = 0;
for (Score score : deelnemers) {
result += score.getScore();
}
return result / deelnemers.size();
}