Java if / else语句缺少返回语句

 

问题描述:

public int checkGuess(int g, int randomnumber){

    number=g;
    this.randomnumber= randomnumber;

    if (number == randomnumber)
        return 0;

    else if (number < randomnumber)
        return -1;

    else if (number > randomnumber)
        return 1;

}

为什么这给了我一个丢失的退货陈述错误?每个if / else都有返回值,最后一个括号出现错误


 

第 1 个答案:

每个return语句都在一个if语句内。虽然从逻辑上讲这是不可能的,但是当所有if评估都不为真时,编译器需要返回。

我建议:

public int checkGuess(int number, int randomnumber){
    int retVal = 0;
    this.randomnumber= randomnumber;

    if (number == randomnumber) {
        retVal = 0;
    } else if (number < randomnumber) {
        retVal = -1;
    } else if (number > randomnumber) {
        retVal = 1;
    }
    return retVal;
}

我认为,此解决方案可解决编译器问题并稍微提高可读性。

或者,有以下解决方案:

public int checkGuess(int number, int randomnumber){
    this.randomnumber= randomnumber;

    if (number == randomnumber) {
        return 0;
    } else if (number < randomnumber) {
        return -1;
    } else if (number > randomnumber) {
        return 1;
    } else {
        //throw an exception
    }
}

引发异常将使你可以退出方法而无需返回任何信息……因为可以说,如果到达最后一个else,显然会出错。


我的应用程序有许多System.out.println()语句。我想从println捕获消息并将其发送到标准记录器(Log4j,JUL等)。怎么做 ?