代码:
@Override
public Double getNotaMedia() {
Double notaAux = 0.0;
int aux1 = this.notas.size();
int aux3 = 0;
if(!this.notas.isEmpty()){
for (int aux2 = 0; aux2 <= aux1; aux2++){
if(this.notas.get(aux2).getValorNota() >= 5.0){
notaAux += this.notas.get(aux2).getValorNota();
aux3 = aux3 + 1;
}
return notaAux.doubleValue() / aux3;
}
}
return notaAux;
}
根据Eclipse,aux2++
是死代码,我无法弄清楚原因。
答案 0 :(得分:6)
在return
循环体的末尾有一个for
语句,因此函数将在下一个循环迭代开始之前返回,因此永远不会执行增量aux2++
(或者,更具体地说,在第一个完全结束之前)。
答案 1 :(得分:0)
for (int aux2 = 0; aux2 <= aux1; aux2++){
if(this.notas.get(aux2).getValorNota() >= 5.0){
notaAux += this.notas.get(aux2).getValorNota();
aux3 = aux3 + 1;
}
return notaAux.doubleValue() / aux3;
}
在这个for
语句中,aux2++
将在循环的每次迭代完成后执行。但是在这段代码中,循环的第一次迭代(如果有的话)以return
结束,它突然完成循环(以及整个方法);因此,程序永远无法进入aux2++
表达式。
return
是否应该在if
内?