繁体   English   中英

尝试从 while 循环返回时出现无法访问的语句错误 - Java

[英]Unreachable statement error when trying to return from a while loop - Java

static long minDaysToEmpty(long C, long l) {
    long previousFill=C;
    long day=1;
    long currentFill=C;
    while(true){
        currentFill=Math.min(C,(previousFill-(day))+l);
        previousFill=currentFill;
        day++;
        if(day>3){
            return day;
        }
    }
    return day;
}

此代码会引发编译时错误。

Test.java:15: error: unreachable statement return day;

我不明白为什么这个声明达不到。

在对原始代码进行以下修改后,可以访问 if 块

if(day>3){
  break;
}

但是在同一个块内返回语句是不可访问的。

由于 while 循环是while (true)且不包含break语句,因此循环退出的唯一方法是满足此条件,该条件已从方法返回

if (day > 3) {
    return day;
}

因此,方法底部的return day是不可能到达的。

只需删除该线路return day; 在方法的底部。 如果你的逻辑是正确的并且day最终会大于 3,你就不需要它。

或者,选择一个合适的条件而不是while (true) ,或者添加一个 break 语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM