gpt4 book ai didi

java - for 循环中缺少 return 语句

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:42 25 4
gpt4 key购买 nike

我可以找到与此类似的问题,但找不到我对这个特定案例的预期答案。

public int getIndex(){
for(int x = 0; x < 5; x++) {
return x;
}
}

当我执行这段代码时,我得到了一个编译错误“Missing return statement”。但是,据我所知,由于第一次 x=0,for 循环中的代码将毫无疑问地执行。因此,对于这种特殊情况,不可能不执行 for 循环内的代码。那么,为什么我们还需要在 for 循环之外声明一个额外的 return 语句呢?

最佳答案

与您不同,编译器无法(或者更确切地说,不会尝试)确定循环至少执行一次。

关于这方面的具体规则在JLS 14.21中给出。 .特别是:

A basic for statement can complete normally iff at least one of the following is true:

  • The for statement is reachable, there is a condition expression, and the condition expression is not a constant expression (§15.28) with value true.

  • There is a reachable break statement that exits the for statement.

The contained statement is reachable iff the for statement is reachable and the condition expression is not a constant expression whose value is false.

你没有常量条件表达式,所以,编译器认为这样的for循环可以正常完成,因此它后面的语句是可达的。

It would work如果 i < 5 没有进一步的返回声明是常量表达式,例如 true .

public int getIndex(){
for(int x = 0; true; x++) {
return x;
}
}

编译器可以确定您的原始循环从未正常完成,给出了关于可达性的更复杂的规则,但这种情况的实际用例太小以至于无法证明其复杂性。

关于java - for 循环中缺少 return 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56238388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com