即使我有退货声明,“缺少退货声明”

时间:2020-01-15 19:43:47

标签: java

这是我的代码块

lightweight_named_tuple

它说缺少一个返回声明。毫无疑问,这是因为我的return语句在我的for循环中,但是我是一个Java新手,并且我一直在外面弄乱它,因此我一直在为自己制造新的问题。

4 个答案:

答案 0 :(得分:1)

您的返回值位于<!-- jQuery first, then Popper.js, then Bootstrap JS. --> <script src="node_modules/jquery/dist/jquery.slim.min.js"></script> <script src="node_modules/popper.js/dist/umd/popper.min.js"></script> <script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script> 循环内,但是如果数组为空(因此for为0),它可能根本不会执行,因此编译器会抱怨需要返回。

您可以将返回值初始化为默认值(例如nums.length)并在循环中进行更新。像这样

false

答案 1 :(得分:1)

您的代码有两件事

  • 即使您知道nums数组永远不会为空,也仍然需要返回某些内容,这是您的主要问题。
  • 您是在第一次迭代中从函数而不是循环中返回的。即使您的数组可能包含多个元素,您还是主要使用前三个元素。

这是您代码的修订版

public static boolean noTriples(int[] nums) {
    for (int i = 0; i < nums.length; i++) {
        // If the condition is true for the current element, we return. 
        // If not, we continue to the next element
        if (!(nums[i] == nums[i + 1] && nums[i + 1] == nums[i + 2])) {
            return true;
        }
    }
    // in case our array is empty, we return false.
    // and we never go through our loop
    // or maybe, no element matches our condition.
    return false;
}

某些人更喜欢一个函数中没有多个return语句。在这种情况下,您可以实例化一个boolean变量,该变量在开始时是错误的,并且您可以更改此变量的值,而不是在循环中返回true。然后,您将返回该变量。

答案 2 :(得分:1)

这是因为编译器不确定是否会在for循环中返回它。 for循环的中间部分是一个条件,因此如果从一开始就为假,则不会执行循环,也不会返回值。如果您尝试在if语句中返回else而不返回else,也会发生同样的情况。

        boolean flag=false;
        for(int i=0;flag;i++){
            System.out.println("This will not be printed");//this will not be printed
        }

如果您执行以下操作:

        for(int i=0;true;i++){
            return "value";
        }

编译器确保您返回一个值,因此不会抱怨。

答案 3 :(得分:0)

您必须返回循环之外。由于在循环内返回,因此出现编译时错误。您必须在循环内计算布尔值true或false,然后在for循环外返回。