zoukankan      html  css  js  c++  java
  • JAVA中用偏移 求闰年的疑惑

    对于java中求一个闰年, 或许大家都很熟悉:  就是 判断这个年份能被4整除,并且不能被100整除,  或者是能被400整除 在这里直接上代码

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个年份");
        int i = sc.nextInt();
        //for(int i = 0 ;i<10000;i++){ 

        if((i%4==0&&i%100!=0)||i%400==0){
        System.out.println(i+"是闰年");
        }else{
        System.out.println(i+"是平年");
        }
        //}

        这样可以很简单的求出一个闰年,  但是还有第二种方式: 只需要判断这个月的2月份有多少天, 如果是29天就是闰年, 如果是28天就是平年.  还是直接上代码

        Scanner sc = new Scanner(System.in);

        System.out.println("请输入一个年份");
        int year = sc.nextInt();
       
        Calendar c = Calendar.getInstance();
        . 设置输入年3月1日, set(int year, int month, int day);
        c.set(year, 2, 1);// 设置成3月1日 , 这里获取月份表示范围是[0,11]表示[1,12]月份
         将这个日历对象的中的天数,向前偏移一天,add(int field, int amount);
        c.add(Calendar.DAY_OF_MONTH, -1);  前面设置成了3月1日, 3月1日向前偏移一天就是2月的最后一天
         获取这个月的天数.get(int Field);
        int day = c.get(Calendar.DAY_OF_MONTH);
        if(day == 29){
        System.out.println(year + "年是闰年");
        }else{
        System.out.println(year + "年是平年");
        }

        到了这里就出现了问题  当年份为

                  //100,200,300,500,600,700,900
        //1000,1100,1300,1400,1500,1700,1800,1900
        //2100,2200,2300,2500,2600,2700,2900
        //3000,3100,3300,3400,3500,3700,3800,3900
        //4100,4200,4300,4500,4600,4700,4900  ..................

        这些时 , 本应该是平年 ,  用偏移输出的却是闰年   也就可以理解成:上面年份的二月 在java时间中是29天. 很明显 ,这是错误的

        知错能改善莫大焉!  

  • 相关阅读:
    python 读写excel,基于win32com实现
    nginx中lua语言获取传参字符串转json打印key,value
    nginx中lua语言打印匹配正则表达式的内容
    nginx 对于post,get参数访问做xss,sql注入过滤
    javaWeb第五天---MVC设计模式
    javaWeb第四天-----jspELJSTL
    javaWeb第三天---http协议和会话技术
    javaWeb第一天
    JDBC第二天---JDBC工具类
    jdbc第三天---配置文件、dao模式
  • 原文地址:https://www.cnblogs.com/youyouxiaosheng-lh/p/8136257.html
Copyright © 2011-2022 走看看