[英]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;
}
它不会编译,因为可以在不返回任何内容的情况下到达方法的结尾。 如果数组的长度为0
或1
,则不会输入循环,也不会执行return
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.