无法弄清楚为什么这是死代码

时间:2015-01-06 20:38:35

标签: java

到目前为止

代码:

@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++是死代码,我无法弄清楚原因。

2 个答案:

答案 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内?