Java 求闰年 (细细品味if语句分开写和合到一起写得到的不一样的结果)

来源:互联网 发布:chrome json 插件 编辑:程序博客网 时间:2024/06/10 17:02

package cn.itcast.demoZuoYe_GuanQia3;
/*
* 关卡3 训练1
* 定义一个方法,去打印指定两个年份之间所有的闰年年份
如:将2000和2005传入方法,方法执行完毕会打印出这段之间的所有闰年年份
2000和2004
提示:
计算公历年闰年的算法: 四年一闰,百年不闰,四百年再闰
翻译:
满足如下任意一条即使如年
1)年份是整百数的必须是400的倍数才是闰年
2)其他年份能被4的是闰年
实例: 2000 是整百数,并且是400的倍数所以是闰年; 2004年是4的倍数是闰年
2100 是整百的倍数但不是400的倍数,所以不是闰年
* */
import java.util.Scanner;

public class Test1_XunZhaoRuiNian {

public static void main(String[] args) {    Scanner sc = new Scanner(System.in);    System.out.println("请制定第一个年份:");    int year1 = sc.nextInt();    System.out.println("请制定第二个年份:");    int year2 = sc.nextInt();    ruiNian(year1, year2);}public static void ruiNian(int a, int b) {    int min = a < b ? a : b;    int max = a > b ? a : b;    System.out.println("第一种方法:");    //这里特别值得品味................................................    for (int i = min; i <= max; i++) {        /*         *这种方式得不到想要的结果,比如说当i=2100(非闰年)时i%400==0不满足条件          *将执行else语句,而else里面的if语句是满足条件的,所以会把2100当成瑞年进行输出         */        // if (i % 100 == 0 && i % 400 == 0) {         // System.out.println(i);                      // } else {                                  // if (i % 4 == 0) {        // System.out.println(i);        // }        // }        /*相比于上面的方式,下面的方式当i=2100(非瑞年)时,由于i%100==0为真,         * 所以会继续执行if (i % 400 == 0),此时i % 400 == 0为假,         * 不会执行任何其他的语句,更不可能跳到else语句,所以这种方式可以得到所有真正的瑞年         */        if (i % 100 == 0) {// 1)年份是整百数的必须是400的倍数才是闰年            if (i % 400 == 0) {                System.out.println(i);            }        } else {// 2)其他年份能被4的是闰年            if (i % 4 == 0) {                System.out.println(i);            }        }    }    /*i % 4 == 0 && i % 100 != 0 || i % 400 == 0     * 第一句:可以得到所有被4整除的数;     * 第二句:相当于排除了所有年份为整百数的年份;     * 第三句:又把年份为整百数的年份中可以被400整除的年份给弄了回来.     * 所以这种方式也可以得到所有真正的瑞年                            */    System.out.println("第二种方法:");    for (int i = min; i <= max; i++) {        if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {            System.out.println(i);        }    }}

}

阅读全文
0 0
原创粉丝点击