我正在制作一个小程序,它确定3个整数的最小整数。我在将整数返回到变量答案时遇到了问题。
以下是我对该计划的工作方式的看法;
计划运行:
代码:
public class Method {
public static void main(String[] args) {
int answer = Minimum(20, 40, 50);
}
public static int Minimum(int first, int second, int third) {
if ((first < (second) && (first < third))) {
return first;
} else if ((second < (first) && (second < third))) {
return second;
} else if (((third < first) && (third < second))) {
return (third);
} else {
System.out.println("error");
}
}
}
答案 0 :(得分:2)
您需要在所有情况下都返回结果,因此else
块不正确。你真的认为有第四种情况吗?不,没有:有三个整数,所以最小值是这三个中的一个,这意味着只有3个案例......只需删除else
块。顺便问一下,为什么要使用这么多括号?它没用,也不可读。
public static int Minimum(int first, int second, int third){
if (first < second && first < third)
return first;
else if (second < first && second < third)
return second;
else
return third;
}
正如其他人所说,这不足以使您的方法正确。实际上,你并不关心严格的不平等,因为当两个数字相同时,你可以选择其中任何一个作为最小值。如果两个第一个参数相等,则此代码会中断。要解决此问题,只需使用<=
代替<
(无处不在)。
答案 1 :(得分:2)
您的代码看起来有点复杂。
int Minimum(int first, int second, int third) {
int min = first;
if (second < min) {
min = second;
}
if (third < min) {
min = third;
}
return min;
}
这看起来令人毛骨悚然,但应该这样做。
希望有助于理解。
答案 2 :(得分:1)
你必须在最后的else
区块中返回。但您可以使用Math.min(int, int)
简化代码。像,
public static int Minimum(int first, int second, int third) {
return Math.min(first, Math.min(second, third));
}
答案 3 :(得分:0)
在任何情况下,最小函数应始终返回整数值。在else之后,添加return语句。
答案 4 :(得分:0)
在Java 8+中,您的方法也可以如下所示:
public static int minimum(Integer val1, Integer val2, Integer val3){
List<Integer> list = Arrays.asList(new Integer[]{val1, val2, val3});
return list.stream().min((Integer v1, Integer v2) -> v1 < v2 ? 0 : 1 ).get();
}