您的位置:首页 > 编程语言 > Java开发

我的java学习路之类和对象学习应用demo2日历

2017-05-01 14:41 375 查看
学习完类和对象后,我们开始来举一反三,编写3个小demo来试一试吧!

第二个日历小程序:

/*

*这是一个打印出日历的小程序 DaYinRiLi

*/

public class DaYinRiLi{

public static void main(String[] args){

//提示要查看的年份和月份并用year和month保存下来

Scanner input =new Scanner(System.in);

System.out.println("请输入要查看的年份");

int year = input.nextInt();

System.out.println("请选择一个月份:");

int month =input.nextInt();

printMonth(year, month);

}

//将日历分层头部和身体,头部格式可以确定

public static void printMonth(int year,int month){
printMonthTitle(year, month);
printMonthBody(year,month);

}

//这是日历的头部

public static void printMonthTitle(int year,int month){
System.out.println("       " + year + "年" + getMonthName(month));
System.out.println("--------------------------------");
System.out.println(" sun mon tue wed thu fri sta ");

}

//判断月份并改成中文的形式

private static String getMonthName(int month) {
// TODO Auto-generated method stub
String monthName=" ";
switch (month) {
case 1: monthName ="一月";break;
case 2: monthName ="二月";break;
case 3: monthName ="三月";break;
case 4: monthName ="四月";break;
case 5: monthName ="五月";break;
case 6: monthName ="六月";break;
case 7: monthName ="七月";break;
case 8: monthName ="八月";break;
case 9: monthName ="九月";break;
case 10: monthName ="十月";break;
case 11: monthName ="十一月";break;
case 12: monthName ="十二月";break;
}
return monthName;

}

//打印日历的身体

public static void printMonthBody(int year, int month) {
// TODO Auto-generated method stub
int startDay = getStartDay(year,month);
int munberOfDaysInMonth = getNumberOfDaysInMonth(year,month);
int i=0;
for(i=0;i<startDay;i++)
System.out.print("    ");
for(i=1;i<=munberOfDaysInMonth;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) {
// TODO Auto-generated method stub
final int START_DAY_FOR_JAN_1_1800 =3;
int totalNumberOfDays = getTotalNumberOfDays(year,month);
return (totalNumberOfDays + START_DAY_FOR_JAN_1_1800) %7;

}

//设天数total为0,从1800年到输入的年份过了多少天,然后加上输入月份的天数

public static int getTotalNumberOfDays(int year, int month) {
// TODO Auto-generated method stub
int total = 0;
for(int i=1800;i<year;i++)
if(isLeapYear(i))
total = total +366;
else
total = total +365;
for(int i=1;i<month;i++)
total = total +getNumberOfDaysInMonth(year,i);
return total;

}

//判断输入的年份是不是闰年

private static boolean isLeapYear(int year) {
// TODO Auto-generated method stub
return year%400==0||(year%4==0&&year%100!=0);

}

//判断输入的月份是大月还是小月,如果是2月还将判断是否闰月

public static int getNumberOfDaysInMonth(int year, int month) {
// TODO Auto-generated method stub
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 31;
if(month==4||month==6||month==9||month==11)
return 30;
if(month==2)return isLeapYear(year)?29:28;
return 0;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java demo日历