【问题标题】:JAVA - return statement within the for loopJAVA - for 循环中的返回语句
【发布时间】:2015-06-17 00:18:25
【问题描述】:

我有一个关于“return”语句的简单问题。示例在代码中。 我一直认为 isPrime(n) 总是“真实的”。因为“回归真实;”在方法的末尾,它应该覆盖以前的返回。任何人都可以帮忙吗?代码运行完美,产生了正确的结果。

private boolean isPrime(int n) {
    for(int i = 2; i < n; i++) {
        if (n % i == 0) return false;   
    }
    return true;
}

【问题讨论】:

    标签: java return


    【解决方案1】:

    'return' 退出函数,返回您返回的任何值。永远不会到达最后一次返回,因此它不会返回默认值。

    【讨论】:

    • 谢谢。所以“返回”是否在循环中并不重要。
    • 确实如此,如果它是素数则返回false,退出整个函数。 break 只会退出 for 循环(如果你这样做,这将始终返回 true)。 return 功能更强大,将值返回给父/调用函数。
    【解决方案2】:

    不,一旦你从一个方法返回,你就完成了。如果您想说服自己,请插入打印语句,或通过调试器运行它。

    【讨论】:

    • 我做到了。0-真 1-真 2-真 3-真 4-假 5-真 6-假 7-真 8-假 9-假 10-假
    【解决方案3】:

    如果if (n % i == 0) 为真,它将执行return false; 并退出该方法。仅当无法执行 return false; 时才会到达 return true;

    【讨论】:

      【解决方案4】:

      不,第二个return 不会覆盖之前的return,它甚至永远不会到达。控制在return 时立即离开方法。

      (避免这种情况发生的唯一方法是在 finally 块内添加第二个 return。这确实会改变返回值。但非常不鼓励这样做)

      【讨论】:

        【解决方案5】:

        函数不会完全执行然后返回,它们可以在执行期间的任何时候使用 return 语句退出。

        因此,如果找到n % i == 0 的数字,则子程序将返回 false 并退出。

        如果函数完成了 for 循环并且从未解析过 if 语句,则返回 true 并退出。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-22
          • 1970-01-01
          • 2019-05-04
          • 2018-03-07
          • 1970-01-01
          • 2015-05-05
          • 1970-01-01
          • 2016-09-03
          相关资源
          最近更新 更多