public class Test04   //判断1900到2010之间的闰年
{
public static void main(String[] args)
{
System.out.println("闰年有:");
for(int i= 1900;i<=2010;i++)
{
System.out.print(Year(i) + ",");
}
} static int Year(int n)   //判断闰年的函数
{
//int n;
if((n % 4 == 0) && (n % 100 != 0))
{
return n;
}
if(n % 400 == 0)
{
return n;
}
//return 0;  //如果加上这句,编译可以通过,但结果不对;如果不加上这句编译不过 
}
}

解决方案 »

  1.   

    应该这样。先加上return 0。再
    for(int i= 1900;i<=2010;i++)
    {
        if(Year(i)!=0)
        System.out.print(Year(i) + ",");
    }
      

  2.   


    public class Test04   //判断1900到2010之间的闰年
    {
        public static void main(String[] args)
        {
            System.out.println("闰年有:");
            for(int i= 1900;i<=2010;i++)
            {
                int year = Year(i);
                if(year==i)
                    System.out.print(year + ",");
            }
        } static int Year(int n)   //判断闰年的函数
        {
            //int n;
            if((n % 4 == 0) && (n % 100 != 0))
            {
                return n;
            }
            if(n % 400 == 0)
            {
                return n;
            }
            return 0;   
        }
    }
      

  3.   

    因为假设如果程序的两个if语句都不执行的话,那就没有返回值了,所以必须要有返回值。虽然你的两个if语句已经肯定会被执行一个,但是程序并不知道这点。你可以用if else 语句,这样保证每个子部分都会被执行,从而你的最后一个return不会有了
      

  4.   

    返回什么int数值都可以,这是因为这个方法要有一个返回值,所以你的程序不管走那条路,只要都能给个返回值为int的值,就能编译成功。不算什么大问题吧,多理解理解就行了。
      

  5.   

    package March02;//这是我根据你的程序修改了下,你自己看看,理解
    public class Test04   //判断1900到2010之间的闰年
    {
        public static void main(String[] args)
        {
            System.out.println("闰年有:");
            for(int i= 1900;i<=2010;i++)
            {
             if(Year(i)){  //这里修改了,是返回值为boolean型,这样判断可以排除非为0年的数值
             System.out.print(i+ ",");
             }
            }
        } static boolean Year(int n)   //这里我修改了返回类型
        {
            //int n;
            if((n % 4 == 0) && (n % 100 != 0))
            {
                return true;
            }
            if(n % 400 == 0)
            {
                return true;
            }
           
            return false;
        }
    }
      

  6.   

    这样简单点吧~就是打印出来最后那个后面有逗号~囧
    public class Test04   //判断1900到2010之间的闰年
    {
        public static void main(String[] args)
        {
            System.out.println("闰年有:");
            
            for(int i= 1900;i<=2010;i++)
            {
             if((i % 4 == 0) && (i % 100 != 0))
             {
                System.out.print(i + ",");
             }
            if(i % 400 == 0)
             {
                System.out.print(i + ",");
             }
            else continue;
            }
        }
    }
      

  7.   

     static int Year(int n)   //判断闰年的函数
        {
            //int n;
            if((n % 4 == 0) && (n % 100 != 0))
            {
                return n;
            }else if(n % 400 == 0)
            {
                return n;
            }else{
    return 0;
    }
         
        }
    这样就行了
      

  8.   

    static int Year(int n) //判断闰年的函数
      {
      if((n % 4 == 0) && (n % 100 != 0))
      return n;
      else
     return n % 400 ==0 ?n:0;
      }
    这样代码少点
      

  9.   

    很精练,c语言的逻辑与是&&,java的是&
      

  10.   

    static int Year(int n)肯定有一个返回值,不是闰年就是0.
    输出的时候判断一下不是0在输出就行了
      

  11.   

    其实上面的方法都大同小异,只是表示的方式不一样package anyun.model.GeneratorId;public class T   //判断1900到2010之间的闰年
    {
        public static void main(String[] args)
        {
            System.out.println("闰年有:");
            for(int i= 1900;i<=2010;i++)
            {
               
                if(i%400==0||(i%4==0&&i%100!=0)){
                    System.out.print(i + ",");
            }
        }
       }
    }
    这样写也行
      

  12.   

    if(){}else if(){}else{}为什么要俩个if 俩个if再加上一个非空的方法 理论上就应该是三个return 但是俩个if 的外面return0这句一直会执行 所以一直都是0
      

  13.   

    这样不就能完成了么?
    为什么要连续判断呢?
    for(int i = 1900; i < 2012; i++) {
    if (i % 4 == 0){
    System.out.println(i);
    }
    }
      

  14.   

    static boolean Year(int n)
      {
      if((n % 4 == 0) && (n % 100 != 0))
      {
      return true;
      }
     
      return n%400==0;  }
      

  15.   

    这样写 if(){ }else{ } 因为你不可能把所有的可能性都考虑到【jvm也是这样做的】
      

  16.   


    不加return 0;当不满足任何一个IF条件时不就不能返回了么?注意,程序执行到return语句时自动结束该方法的,不往后执行了。
      

  17.   

    public class Test04   //判断1900到2010之间的闰年
    {
        public static void main(String[] args)
        {
            System.out.println("闰年有:");
            for(int i= 1900;i<=2010;i++)
            {
             if(Year(i))
             {
             System.out.print(i + ",");
                 }
            }
            System.out.println();
        }    static boolean Year(int n)   //判断闰年的函数
        {
            return (n%4==0&&n%100!=0)||n%400==0?true:false;     
        }
    }
    这样也少些
      

  18.   

    修改判断闰年的函数
    static int Year(int n)   //判断闰年的函数
        {
            int num = null;
            if(((n % 4 == 0) && (n % 100 != 0)))||(n % 400 == 0))
            {
                num = n;
            }
            return num;  //如果加上这句,编译可以通过,但结果不对;如果不加上这句编译不过 
        }
    }
      

  19.   

     //return 0;  //如果加上这句,编译可以通过,但结果不对;如果不加上这句编译不过 LZ的YEAR方法都是INT类型的当然要返回值咯
    润年的方法用十九楼的就成啊
    或者用我这个,嘿嘿,你自己输入年份判断//判断是否为闰年
    import java.util.*;
    public class LeapYear
    {
    /**
     * @param args
     */
    public static void main(String[] args) 
    {
    // TODO Auto-generated method stub
    Scanner y=new Scanner(System.in);//通过键盘输入年份
    System.out.printf("请输入年份:");
    int yearIn=y.nextInt();
    boolean leapIn=yearIn%400==0||yearIn%100!=0&&yearIn%4==0;//是闰年的条件
    System.out.println(yearIn+" is leap year? "+leapIn);
    /*int year=2012;
        boolean leap=year%400==0||year%100!=0&&year%4==0;
        System.out.println(year+"is leap year "+leap);*/
    }
    }