在java中返回最大值

时间:2015-04-10 17:20:26

标签: java max return-value sliding-window

非常简单的问题我确定,因为我只是在学习。

在我正在实现的更大的类中,我们必须提供一个方法Max来返回数组中的最大值。这就是我所拥有的:

public static int Max(int[] window){
    //assume length of array window > 0

    int Max = window[0];
    for (int i = 1; i < window.length; i++){
        if (window[i] > Max) {
            Max = window[i];
        }
        return Max;
    }
}

但是,该方法无法编译。我相信它与返回类型有关。该程序在程序中进一步调用此函数(以及类似的Min函数):

System.out.println("[" + window.Min() + " " + window.Max() + "]");

我做错了什么?

编辑:感谢您的所有答案!刚开始学习编码,所以像这样的琐碎错误仍然会引起很大的挫败感。拯救我的屁股,你们所有人!

3 个答案:

答案 0 :(得分:3)

Java始终考虑未输入for循环的可能性,并且在方法结束时看不到return语句,从而导致缺少返回语句编译器错误。声明该方法返回一些int,因此每个可能的执行路径都必须返回一些东西。

return Max;循环结束后移动for,以满足编译器并提供正确的&#34;找到最大值&#34;方法

顺便说一句,Java变量通常具有每个普通约定的小写首字母。 Max变量应称为max。这同样适用于Max方法的名称。

答案 1 :(得分:2)

我认为这不会编译,因为有一种方法可以在没有明确return语句的情况下到达方法的末尾。

您需要将return Max;放在底部,而不是for循环内部:

public static int Max(int[] window){
    //assume length of array window > 0

    int Max = window[0];
    for (int i = 1; i < window.length; i++){
        if (window[i] > Max) {
            Max = window[i];
        }

    }
    return Max;
}

答案 2 :(得分:2)

return语句不应该在for循环中。

应该是

 public static int Max(int[] window){
    //assume length of array window > 0

    int Max = window[0];
    for (int i = 1; i < window.length; i++){
        if (window[i] > Max) {
            Max = window[i];
        }
    }
    return Max;
}

它没有编译,因为可以在没有返回任何内容的情况下到达方法的末尾。如果数组的长度为01,则不会输入循环,并且return未执行。