非常简单的问题我确定,因为我只是在学习。
在我正在实现的更大的类中,我们必须提供一个方法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() + "]");
我做错了什么?
编辑:感谢您的所有答案!刚开始学习编码,所以像这样的琐碎错误仍然会引起很大的挫败感。拯救我的屁股,你们所有人!
答案 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;
}
它没有编译,因为可以在没有返回任何内容的情况下到达方法的末尾。如果数组的长度为0
或1
,则不会输入循环,并且return
未执行。