public class test{
public static int method(int n){
if(n==1)
return 1;
if(n!=1)
return 0;
}
public static void main(String args[])
System.out.println(8);
}
这个程序有什么问题啊?报错是第二行:This method must return a result of type int.
我把第二个if(n!=1)改成else就不报错了,但是我不知道为什么上面那样写不对呢?我的返回值的确是int类型的啊?
请帮忙解答一下。
public static int method(int n){
if(n==1)
return 1;
if(n!=1)
return 0;
}
public static void main(String args[])
System.out.println(8);
}
这个程序有什么问题啊?报错是第二行:This method must return a result of type int.
我把第二个if(n!=1)改成else就不报错了,但是我不知道为什么上面那样写不对呢?我的返回值的确是int类型的啊?
请帮忙解答一下。
这样就和你方法的定义返回int型冲突了
return 1;
else
return 0;
关键是我不知道为什么会报那样的错,说我的返回值不对,搞不懂啊。
那是按你的思维
可JVM并不这样啊,它只是认为你没有返回值..
你写两个,其实和一个是等价的呀
if(n==1)
return 1;
if(n!=1)
return 0; 与if(n==1)
return 1;是"一样"的哦
因为JVM都当做没有返回值的哦
return 0;
if(n==1)
return 1;
if(n!=1)
return 0;
return 0;
}
http://javabelt.cn/viewthread.php?tid=61&extra=page%3D1
public static int method(int n){
return n==1?1:0;
}
public static int method(int n){
if(n==1)
return 1;
if(n!=1)
return 0;
else {
return 2;
}
}
public static void main(String args[])
System.out.println(8);
} 这样就正确了,因为JAVA机制的关系,他不会理解你IF条件里面的内容,它会客观的判断,如果两个IF都不满足就没有返回值,所以就抱错了。
也就是说 :虽然 if (n == 1) return 1; if (n != 1) return 0; 理论上等同与:
if (n == 1) return 1; else return 0;
但是JAVA不会这么认为,他认为是 if() return ;if() return; 缺少不满足两个IF的条件,所以报错,不知道这样说你理解吗?
public class Test
{
public static int method(int n)
{
return (n==1)?1:0;
}
public static void main(String args[])
{
System.out.println(method(1));
}
}