万年历(循环练习)

2018-08-05 07:45:30来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

/**
*已知1年1月1日是星期日
*/
import java.util.Scanner;
public class PerpetualCalendar{
    public static void main(String[]args){
        int year;
        int month;
        int week;
        int days = 0;
        int totaldays = 0;
        boolean isRn;
        
        Scanner input = new Scanner(System.in);
        System.out.println("请输入年份");
        year = input.nextInt();
        System.out.println("请输入月份");
        month = input.nextInt();
        
        //是否闰年
        if(year%400 == 0||(year%4 == 0&&year%100 != 0)){
            isRn = true;
        }else{
            isRn = false;
        }
        
        //某年到1年1月1日总天数(包含1年1月1日)
        for(int y = 1;y < year;y++){
            if(y%400 == 0||(y%4 == 0&&y%100 != 0)){
                totaldays += 366;
            }else{
                totaldays += 365;
            }
        }
        
        //某月到1年1月1日的天数(包含1年1月1日)
        for(int m = 1;m <= month;m++){
            switch(m){
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                days = 31;
                break;            
            case 4:
            case 6:
            case 9:
            case 11:
                days = 30;
                break;
            case 2:
                if(isRn){
                    days = 29;
                    break;
                }else{
                    days = 28;
                    break;
                }
            default:
                System.out.println("输入有误");
                break;
            }
        if(m != month){    
        totaldays += days;
        }
    }
    System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t");
    
        //取余7余0就是星期日,week值是空格数
        week = 1 + totaldays%7;
        if(week == 7){
            week = 0;
        }
        
        //星期几前的空格数
        for(int w = 0;w < week;w++){
                System.out.print("\t");
            }    
        
        //打印天数
        for(int d = 1;d <= days;d++){
            System.out.print(d+"\t");
            //打印7次换行
            if((d+week)%7 == 0){
                System.out.println();
            }
        }
    }
}

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Spring Cloud中异常处理的套路

下一篇:Tomcat 7 不能传参json 解决办法