java输入年月输出日历_Java实现打印日历的功能

这是一个Java程序,它从用户输入的年份和月份接收数据,然后打印出相应的日历。程序首先获取用户输入的完整年份和1到12之间的月份,接着调用`printMonth`方法展示日历标题和主体。日历标题包含月份名称和年份,而日历主体则根据月份的第一天和总天数进行格式化输出。
摘要由CSDN通过智能技术生成

1 importjava.util.Scanner;2 public classPrintCalendar{3 public static voidmain(String[] args){4 Scanner input=newScanner(System.in);5

6 System.out.print("Enter full year(e.g.,2011): ");7 int Year=input.nextInt();8

9 System.out.print("Enter month as a number between 1 and 12: ");10 int Month=input.nextInt();11

12 //int year=inputYear();13 //int month=inputMonth();

14 printMonth(Year, Month);15 }16 /*

17 public static int inputYear(){18 boolean flag=true;19 Scanner input=new Scanner(System.in);20 while(flag){21 System.out.print("Enter full year(e.g.,2011): ");22 int iYear=input.nextInt();23 if(iYear>=1800){24 flag = false;25 }26 }27 return iYear;28 }29

30 public static int inputMonth(){31 boolean flag=true;32 Scanner input=new Scanner(System.in);33 while(flag){34 System.out.print("Enter month as a number between 1 and 12: ");35 int iMonth=input.nextInt();36 if(iMonth>=1 && iMonth<=12){37 flag = false;38 }39 }40 return iMonth;41 }*/

42

43 public static void printMonth(int year, intmonth){44 printMonthTitle(year, month);45 printMonthBody(year,month);46 }47

48 public static void printMonthTitle(int year, intmonth){49 System.out.println("\t" + getMonthName(month)+"\t" +year);50 System.out.println("-----------------------------------");51 System.out.println("Mon Tue Wed Thu Fri Sat Sun");52 }53 public static String getMonthName(intmonth){54 String monthName="";55 switch(month){56 case 1: monthName="January"; break;57 case 2: monthName="February"; break;58 case 3: monthName="March"; break;59 case 4: monthName="April"; break;60 case 5: monthName="May"; break;61 case 6: monthName="June"; break;62 case 7: monthName="July"; break;63 case 8: monthName="August"; break;64 case 9: monthName="September"; break;65 case 10: monthName="October"; break;66 case 11: monthName="November"; break;67 case 12: monthName="December"; break;68 }69

70 returnmonthName;71 }72

73 public static void printMonthBody(int year, intmonth){74

75 //Get start day of the week for the first date int the month

76 int startDay=getStartDay(year,month);77

78 //Get number of days in the month

79 int numberOfDaysInMonth =getNumberOfDaysInMonth(year,month);80

81 //Pad space before the first day of the month

82 int i=0;83 for(i=1; i< startDay; i++){84 System.out.print(" ");85 }86 for(i=1; i<=numberOfDaysInMonth;i++){87 System.out.printf("%-4d", i);88

89 if((i+startDay-1)%7==0)90 System.out.println();91 }92 System.out.println();93 }94

95 /**Get the start day of month/1/year*/

96 public static int getStartDay(int year, intmonth){97 final int START_DAY_FOR_JAN_1_1800 = 3;98

99 //Get the total number of days from 1/1/1800 to month/1/year

100 int totalNumberOfDays=getTotalNumberOfDays(year,month);101

102 //Return the start day for month/1/year

103 return (totalNumberOfDays+START_DAY_FOR_JAN_1_1800)%7;104 }105

106 /**Get the total number of days from January 1, 1800;*/

107 public static int getTotalNumberOfDays(int year, intmonth){108 int total = 0;109

110 //get total number of days from 1800 to 1/1/year

111 for(int i = 1800; i

115 total = total + 365;116 }117

118 //add days from January to the month prior to the calendar month

119 for(int i = 0; i

122 returntotal;123 }124

125 /**Get the number of days in a month*/

126 public static int getNumberOfDaysInMonth(int year, intmonth){127 if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)128 return 31;129 if(month==4||month==6||month==9||month==11)130 return 30;131 if(month==2)132 return isLeapYear(year)?29:28;133 return 0;134 }135

136 /**Determine if it is a leap year*/

137 public static boolean isLeapYear(intyear){138 return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);139 }140 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值