Johnnny_yan_lan的Java学习笔记

编写一个程序,显示给定年月的日历,程序提示用户输入年份和月份,然后显示该月的整个日历。
package chap05;

import java.util.Scanner;

public class PrintCalendar {
/*这里使用自顶向下的设计方案,每次实现该程序中的一个方法,等待实现的方法可以用待完善的方法去代替,
这样可以一边写程序,一边测试*/
// main方法
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.print(“请输入年份:”);
int year=input.nextInt();
System.out.print(“请输入月份:”);
int month=input.nextInt();
printMonth(year,month);
}

// 定义printMonth方法
public static void printMonth(int year,int month){
    printMonthTitle(year,month);
    printMonthBody(year,month);
}

// printMonthTitle方法
public static void printMonthTitle(int year,int month){
    System.out.println("         "+getMonthName(month)+"  "+year);
    System.out.println("----------------------------");
    System.out.println("Sun Mon Tue Wed Thu Fri Sat");
}

public static String getMonthName(int month){
    String monthName=" ";
    switch(month){
    case 1:monthName="January";break;
    case 2:monthName="February";break;
    case 3:monthName="March";break;
    case 4:monthName="April";break;
    case 5:monthName="May";break;
    case 6:monthName="June";break;
    case 7:monthName="July";break;
    case 8:monthName="August";break;
    case 9:monthName="September";break;
    case 10:monthName="October";break;
    case 11:monthName="November";break;
    case 12:monthName="December";

    }
    return monthName;
}
public static void printMonthBody(int year,int month){
    int startDay=getStartDay(year,month);
    int numberOfdaysInMonth=getNumberOfDayInMonth(year,month);
    int i=0;

    // 每个月第一天是星期几
    for(i=0;i<startDay;i++){
        System.out.print("   "); // 这里的空格要自己调试
    }
    for(i=1;i<=numberOfdaysInMonth;i++){  // 这里必须<=,不能写成<
        System.out.printf("%4d",i);
        if((i+startDay)%7==0){
            System.out.println();
        }
    }
    System.out.println();
}

public static int getStartDay(int year,int month){
    final int START_DAY_FOR_JAN_1_1800=3;
    int totalNumberOfDays=getTotalNumberOfDays(year,month);
    return (totalNumberOfDays+START_DAY_FOR_JAN_1_1800)%7;

}

public static int getTotalNumberOfDays(int year,int month){
    int total=0;
    for(int i=1800;i<year;i++){ //这里不能写<=,
        if(isLeapYear(i)){
            total+=366;
        }else
            total+=365;
    }
    for(int i=1;i<month;i++){
        total+=getNumberOfDayInMonth(year,i);
    }
    return total;
}
public static int getNumberOfDayInMonth(int year,int month){
    if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){
        return 31;
    }else if(month==2){  // 不能忘记二月
        return isLeapYear(year)?29:28;
    }else
        return 30;
}

public static boolean isLeapYear(int year){
    return year%400==0||year%4==0&&year%100!=0;

}

}

阅读更多
想对作者说点什么? 我来说一句

Java 学习笔记Java学习笔记

2010年01月15日 25.63MB 下载

JAVA个人学习笔记

2009年12月03日 302KB 下载

Java学习笔记(必看经典)

2018年03月31日 37.54MB 下载

java学习笔记及源代码

2010年05月09日 2.73MB 下载

java 学习笔记

2011年09月13日 915KB 下载

java学习笔记,学习java的好帮手

2008年11月10日 1.48MB 下载

java学习笔记

2018年03月23日 31.58MB 下载

java笔记java笔记java笔记

2010年06月15日 719B 下载

Java学习笔记(源码)

2008年11月11日 175KB 下载

Java 学习笔记

2008年08月08日 475KB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭