我是Java新手,我正在努力理解为什么事情不起作用。我有一个名为Geek.java的类,在它下面我有很多方法。我被要求为我的班级做的一种方法是找到3个整数的最小整数。
return np.matrix('{} {};{} {}'.format(a,b,c,d))
如我所知,忽略逻辑错误,如果if条件都不匹配,那么必须有一个默认的返回值。应该由else指定。但是,eclipse仍然告诉我它必须返回int类型的值。"如果以前已经说过这个问题,我很抱歉,但我似乎无法找到答案。 谢谢,
答案 0 :(得分:1)
如果你只是想了解为什么事情不起作用。这是因为,并非所有控制路径都返回一个值。
如果您将代码更改为:
if (num1 < num2 && num1 < num3){
return num1;
}
else if (num2 < num1 && num2 < num3){
return num2;
}
else{
return num3;
}
请注意,现在所有控制路径都会返回一些值。
但我不喜欢这种寻找最低元素的方法。您可以编写一个函数min
,它告诉两个数字中的最小值,然后使用该函数来编写此smallest
函数。
public static int min(int a, int b){
if (a < b)
return a;
else
return b;
}
现在功能smallest
:
public static int smallest(int a, int b, int c){
return min(min(a, b), c);
}
答案 1 :(得分:0)
这是因为你有嵌套的if
语句,这可能导致你的代码没有返回值:
if (num3 < num1) {
if (num3 < num2) {
return num3;
}
} else
return num1;
在这种情况下,假设num3 < num1
但num3
不小于num2
,那么您的代码将不会返回任何值,因为内部if
条件({{ 1}})没有相应的num3 < num2
块。
将代码更改为类似的代码应该有效,因为您的控制流有一个明确的流程,并且总是会返回一个值:
else
应该对其他if (num3 < num1 && num3 < num2) {
return num3;
} else
return num1;
语句进行类似的更改。