Java 下面的方法有什么问题?

Java 下面的方法有什么问题?,java,Java,下面是一个java方法的代码,但它不会编译。我正在使用Eclipse,每当我尝试编译代码时,它都会说: 此方法必须返回类型为int的结果 public static int f(int a, int b, int c) { if ((a < b) && (b < c)) return a; else if ((a >= b) && (b >= c)) return b; el

下面是一个java方法的代码,但它不会编译。我正在使用Eclipse,每当我尝试编译代码时,它都会说:

此方法必须返回类型为
int
的结果

public static int f(int a, int b, int c) { 
    if ((a < b) && (b < c))
        return a; 
    else    if ((a >= b) && (b >= c))
        return b;
    else    if ((a == b) || (b == c) || (a == c))
        return c; 
}
a、b、c
声明为
int
,因此返回类型为
int

public static int f(int a, int b, int c) { 
    if ((a < b) && (b < c))
        return a; 
    else    if ((a >= b) && (b >= c))
        return b;
    else    if ((a == b) || (b == c) || (a == c))
        return c; 
}
publicstaticintf(inta,intb,intc){
如果((a=b)和&(b>=c))
返回b;
else如果((a==b)| |(b==c)| |(a==c))
返回c;
}

如果条件不详尽,则您的
。如果
a>b
b
,则所有条件都不匹配,并且函数不会返回任何内容,这就是Eclipse抱怨的原因


在末尾添加一个默认的
return
语句,可以是无条件的,也可以是在
else
块中。基本上,它不会编译,因为您没有一个else子句,以防任何情况都不正确。那么这个方法就没有返回。因此,编译器要求返回int

public static int f(int a, int b, int c) { 
        if ((a < b) && (b < c))
            return a; 
        else    if ((a >= b) && (b >= c))
            return b;
        else    if ((a == b) || (b == c) || (a == c))
            return c; 
        else{
             System.out.println("No clause matched");
             return 0;  //or something else
         }

    }
publicstaticintf(inta,intb,intc){
如果((a=b)和&(b>=c))
返回b;
else如果((a==b)| |(b==c)| |(a==c))
返回c;
否则{
System.out.println(“无匹配条款”);
返回0;//或其他内容
}
}

如前所述,函数可以结束而不返回。 如果不能发生这种情况(其中一个条件应始终为真),也可以以异常结束:

public static int f(int a, int b, int c) throws Exception
{
    if ((a < b) && (b < c))
    {
        return a;
    }
    else if ((a >= b) && (b >= c))
    {
        return b;
    }
    else if ((a == b) || (b == c) || (a == c))
    {
        return c;
    }
    throw new Exception("Input not valid");
}
publicstaticintf(inta,intb,intc)抛出异常
{
如果((a=b)和&(b>=c))
{
返回b;
}
else如果((a==b)| |(b==c)| |(a==c))
{
返回c;
}
抛出新异常(“输入无效”);
}

通过这种方式,调用者可以处理异常或记录出错情况。

如果非of if else阻止了火灾,会发生什么? 如果您错过了return语句,可以这样使用

public static int f(int a, int b, int c) {
        int result = 0 ;
        if ((a < b) && (b < c))
            result = a;
        else    if ((a >= b) && (b >= c))
            result = b;
        else    if ((a == b) || (b == c) || (a == c))
            result = c;
        return result;
    }
publicstaticintf(inta,intb,intc){
int结果=0;
如果((a=b)和&(b>=c))
结果=b;
else如果((a==b)| |(b==c)| |(a==c))
结果=c;
返回结果;
}
创建一个返回点,并在方法体中尝试分配一个
与此相对应的值,并在最后返回它。

当这些条件都不为真时会发生什么?使用default
else
来处理这些条件都不为真。即使它们是详尽无遗的,我认为您仍然必须有一个默认的返回语句。