• 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月1号开始 * 2.星期 : 直接用总天数对7求余数 31 28 59 / 7 = 5 * 3.以\t来个开


    public class Demo4 {

    /**
    * @param args
    */
    public static void main(String[] args) {
    // TODO Auto-generated method stub

    Demo4 demo = new Demo4();
    demo.show(1900,3);

    }

    //定义一个工具方法:判断平年还是闰年
    public boolean isLeapYear(int year){

    if(year % 400 == 0 || (year % 4==0 && year % 100 != 0)){

    return true;
    }

    return false;
    }

    //计算输入年份下,月份的总天数 1900

    public int getTotalDateFrom(int year , int month){

    //1.定年份的总天数
    int totalDate = 0;//1900到你输入的年份的总天数 2016 1900 - 1903 = 3
    for(int i= 1900 ; i < year ;i++){

    if(isLeapYear(i)){ // 闰年

    totalDate += 366;
    }else {

    totalDate += 365;
    }
    }

    //2.计算月份的天数
    for(int i = 1 ; i< month ;i++){

    totalDate += getDayOfMonth(year, i);
    }

    return totalDate;

    }



    public int getDayOfMonth(int year , int month){

    switch (month) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:

    return 31;

    case 4:
    case 6:
    case 9:
    case 11:
    return 30;
    case 2:
    if(isLeapYear(year)){

    return 29;
    }else {

    return 28;
    }
    default:
    return 30;
    }
    }

    public int printSpace(int year , int month){

    return getTotalDateFrom(year, month) % 7;
    }

    public void print(int year , int month){

    int countSpac = printSpace(year, month) + 1; // 空格的个数
    int count = 0; //定义一个计数
    for(int i = 1; i<=countSpac; i++){
    count++;
    System.out.print("\t");
    }

    //2.打印日期
    for(int i = 1 ; i<=getDayOfMonth(year, month);i++){

    if(count % 7 == 0){

    System.out.println();
    }
    count++;
    System.out.print(i+"\t");

    }

    }

    public void show(int year , int month){

    System.out.println("******************"+year+"****"+month+"***************");
    System.out.println("======================================================");
    System.out.println("日\t一\t二\t三\t四\t五\t六");
    System.out.println("======================================================");
    print(year, month);
    System.out.println();
    }

    }

  • 相关阅读:
    洛谷 P1896 [SCOI2005]互不侵犯(状压DP)
    POJ 3208 Apocalypse Someday(数位DP)
    HDU 3555 Bomb(数位DP)
    HDU 3652 B-number(数位DP)
    蜂鸣器版天空之城
    【洛谷习题】小木棍[数据加强版]
    【NOIP2009】靶形数独
    【洛谷习题】填涂颜色
    【NOIP2003】加分二叉树
    【NOIP2000】单词接龙
  • 原文地址:https://www.cnblogs.com/Huanghaihui/p/6104725.html
Copyright © 2020-2023  润新知