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类型的啊?
请帮忙解答一下。

解决方案 »

  1.   

    如果两个if都不成立那么,程序什么也不返回
    这样就和你方法的定义返回int型冲突了
      

  2.   

     if(n==1) 
       return 1; 
     else
       return 0; 
      

  3.   

    但事实上只要我传入一个int型参数就总有一种情况成立啊。
    关键是我不知道为什么会报那样的错,说我的返回值不对,搞不懂啊。
      

  4.   

    n=2的话就满足第二个IF语句条件,所以仍然返回int型值0啊。
      

  5.   


    那是按你的思维
    可JVM并不这样啊,它只是认为你没有返回值..
    你写两个,其实和一个是等价的呀
    if(n==1) 
     return 1; 
    if(n!=1) 
     return 0; 与if(n==1)
    return 1;是"一样"的哦
    因为JVM都当做没有返回值的哦
      

  6.   

    因为JVM编译的时候,要按照严格的语法,它编译的时候并不执行的呀..LZ能明白不
      

  7.   

    它不是报你返回类型不对,而是所你必须要返回个int结果,这段程序编译就是默认你最后没有返回结果,原因前面人都说了,你是在编译阶段出错,而不是运行阶段,所以和你传入的是几没有关系,程序编译时候会检查这个if语句,如果两个都不成立,而你又没有最后返回一个结果,它会认为方法没有返回结果,再重申下,lz不要想运行阶段,你这是编译阶段出的问题,还考虑不到n=1还是n=2呢,不用if..else,就在最后在补个return 任意的int值,程序都会正常运行了
      

  8.   

    在程序的最后在加上一条语句:
    return 0;
      

  9.   

    必须有一个默认返回值,这样 public static int method(int n){ 
                 if(n==1) 
                 return 1; 
                 if(n!=1) 
                 return 0; 
      return 0;
     } 
      

  10.   

    提示你要返回一个int型。你没返回呀!
      

  11.   

    北大青鸟 全套资料 提供下载
    http://javabelt.cn/viewthread.php?tid=61&extra=page%3D1
      

  12.   


    public static int method(int n){
    return n==1?1:0;
    }
      

  13.   

    public class test{ 
          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的条件,所以报错,不知道这样说你理解吗?
      

  14.   

    我的理解就是,如果第一个if不成立的话,也不会去执行第二个if了,它会自动跳出,所以没有返回值,所以会出错.
      

  15.   

    我怎么没看到你在main方法里调用那个method(int n)方法有呀?
      

  16.   

    JVM编译的时候不会理解除了Java以外的其他语义的。
      

  17.   


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

      

  18.   

    Java不会理解你的n不管是什么都返回int类型的这个逻辑,所以你应该让java在编译时知道你的这段代码绝对不会发生错误