Java 下面的方法有什么问题?
下面是一个java方法的代码,但它不会编译。我正在使用Eclipse,每当我尝试编译代码时,它都会说: 此方法必须返回类型为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
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;
返回结果;
}
创建一个返回点,并在方法体中尝试分配一个
与此相对应的值,并在最后返回它。当这些条件都不为真时会发生什么?使用defaultelse
来处理这些条件都不为真。即使它们是详尽无遗的,我认为您仍然必须有一个默认的返回语句。