您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页java——万年历

java——万年历

来源:华佗小知识

利用Java来实现万年历 

package demo;

import java.util.Scanner;


public class CalendarTest {
    public static void main(String[]args) {
        Scanner sc = new Scanner(System.in);
        Calendar c = new Calendar();
        System.out.println("请输入年份:");
        int year = sc.nextInt();
        System.out.println("请输入月份:");
        int month = sc.nextInt();
        c.show(year,month);
    }
}




class Calendar{
    //判断闰年和平年
    public boolean isLeapYear(int year){
        return ((year % 4 == 0)&&(year % 100 != 0)||(year % 400 == 0));
    }
    //获取指定月份的天数
    public int getTotalDaysOfMonth(int year,int month){
        int total;
        //判断月
        switch (month){
            case 1: case 3: case 5: case 7: case 8: case 12: case 10:
                total = 31;
                break;
            case 2:
                total = (isLeapYear(year)?29:28);
                break;
            default:
                total = 30;
                break;
        }
        return total;
    }
    public int getWeekOfMonth(int year,int month){
        int total = 0;
        for (int i = 1; i < year; ++i){
            total += (isLeapYear(year)?366:365);
        }
        for (int i = 1; i < month; ++i){
            total += getTotalDaysOfMonth(year,i);
        }
        total %= 7;
        total = (total+1)%7;
        return total;
    }
    public void show(int year,int month){
        System.out.println("\033[1;95m"+"\t\t"+" "+year+"年"+month+"月");
        System.out.println("\033[1;96m"+"---------------------------");
        String[] week = {"日","一","二","三","四","五","六"};
        for(int i = 0; i < 7; ++i){
            if(week[i].equals("六") || week[i].equals("日")) System.out.print("\033[32m"+week[i]+"\t");
            else System.out.print("\033[33m"+week[i]+"\t");
        }
        System.out.println();
        int weeks = getWeekOfMonth(year,month);
        for (int i = 0; i<weeks; ++i) System.out.print("\t");
        int days = getTotalDaysOfMonth(year,month);
        for (int i = weeks,j = 1; j <= days; ++i,++j){
            if (i % 7 == 0 || i % 7 == 6)System.out.print("\033[32m"+j+"\t");
            else System.out.print("\033[33m"+j+"\t");
            if ((i+1) % 7 ==0) System.out.println();
        }
        System.out.println();
    }
}

实现:

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务