【问题标题】:Java boolean method: unreachable statementJava布尔方法:无法访问的语句
【发布时间】:2018-06-23 13:35:20
【问题描述】:

我想检查数组中是否没有元素。

private Player[] players = new Player[maxPlayers];

public boolean activePlayer(){
    for(int i = 0; i < players.length; i++){
        if(players[i] != null) {
            return true;
            break;
        }
    }
    return false;
}

ItelliJ 用消息unreachable statement 标记break; 红色。这是什么意思,我该如何解决?

【问题讨论】:

  • 因为return true;之后的那个块中没有任何东西会被执行
  • 因为return
  • break 语句出现在 return 语句之后。 return 表示您退出该方法。删除中断,它将编译
  • return 语句立即从方法中返回,因此不需要 break。

标签: java arrays methods boolean


【解决方案1】:

嗯,在 Java 中,在函数中返回一个值将按顺序: 1.停止执行函数内部的代码 2.返回函数中的值

ItelliJ 是一个非常灵活且“智能”的代码检查器,它会在出现问题或错误时告诉您。 它给你一个错误,“无法访问的语句”,因为“break”语句永远不会被执行,因为当你返回“true”时......(回顾答案的第一部分)......break语句永远不会被执行.

因此,它是一个“无法访问”的语句,在任何情况下都不会被执行。

【讨论】:

    【解决方案2】:

    我们使用return返回一个值返回给调用方法,因此一旦控制进入if 块内部,值true 就会返回给调用方法,因此@ 987654324@ 将永远无法联系到。

    简单地说,return 结束当前方法的执行,返回一个值调用者

    【讨论】:

      【解决方案3】:

      考虑程序的串行行为,一次一行。如果它通过条件语句,它将命中返回语句。在 Java 中,return terminates a function, returning control to the calling function and potentially returning a value as well。断线永远不会被触及!

      这可能有助于您理解 Java 程序中的控制流:http://www.dickbaldwin.com/java/Java026.htm

      如果您添加更多信息,说明您希望程序做什么/您对 break 语句的期望,我们很乐意为您提供帮助!

      【讨论】:

        【解决方案4】:

        简单来说,如果第一个 if 条件为真,那么它只会转到“return true;”。并退出...如果它没有进入 If 块,那么它将继续循环并以“return false;”结束所以是的,intelliJ 是对的。它永远不应该“休息”;

        返回真;实际上会为你做休息,你不需要明确地这样做,它会返回到你调用函数“activePlayers()”的地方

        如果您解释为什么要添加休息时间,我们可能会为您提供进一步的帮助

        【讨论】:

          【解决方案5】:

          break 之前的return 语句将立即结束该方法,因此永远不会到达break

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-10-01
            • 1970-01-01
            • 1970-01-01
            • 2013-06-04
            • 2022-11-11
            • 2010-12-05
            • 2015-05-25
            • 2020-02-09
            相关资源
            最近更新 更多