Eclipse吐出"此方法必须返回int"类型的结果。

时间:2016-10-16 06:49:30

标签: java eclipse if-statement methods return

我是Java新手,我正在努力理解为什么事情不起作用。我有一个名为Geek.java的类,在它下面我有很多方法。我被要求为我的班级做的一种方法是找到3个整数的最小整数。

return np.matrix('{} {};{} {}'.format(a,b,c,d))

如我所知,忽略逻辑错误,如果if条件都不匹配,那么必须有一个默认的返回值。应该由else指定。但是,eclipse仍然告诉我它必须返回int类型的值。"如果以前已经说过这个问题,我很抱歉,但我似乎无法找到答案。 谢谢,

2 个答案:

答案 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 < num1num3不小于num2,那么您的代码将不会返回任何值,因为内部if条件({{ 1}})没有相应的num3 < num2块。

将代码更改为类似的代码应该有效,因为您的控制流有一个明确的流程,并且总是会返回一个值:

else

应该对其他if (num3 < num1 && num3 < num2) { return num3; } else return num1; 语句进行类似的更改。