繁体   English   中英

在Java中返回最大值

[英]Returning max value in java

我敢肯定,这是一个非常简单的问题,因为我只是在学习。

在我要实现的较大类中,我们必须提供方法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() + "]");

我究竟做错了什么?

编辑:感谢您的所有答复! 刚开始学习编码,因此像这样的琐碎错误仍然会引起很多挫败感。 大家救救我!

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

移动return Max; for循环结束之后,既要满足编译器的要求,又要提供正确的“查找最大值”方法。

顺便说一句,Java变量通常按照常规约定具有小写的首字母。 Max变量应称为max Max方法的名称也是如此。

我相信这不会编译,因为有一种方法可以在没有显式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;
}

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

暂无
暂无

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

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