返回带整数的类型

时间:2015-10-13 22:49:02

标签: java

我正在制作一个小程序,它确定3个整数的最小整数。我在将整数返回到变量答案时遇到了问题。

以下是我对该计划的工作方式的看法;

计划运行:

  • 使用列出的参数查找名为“Minimumum”的方法。
  • 确定最小整数并将其返回给方法Minimum
  • 此值存储在答案变量

代码:

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");
        }
    }
}

5 个答案:

答案 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();
}