Java输入年份和月份,得到该月日历(公历)
思路:通过Calendar相关计算得到日历
Ps:闰年能被4和400整除,不能被100整除
代码如下
import java.util.Calendar;
import java.util.Scanner;
public class CalendarExcer {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
boolean isFlag = true;
//while循环里执行算法
while(isFlag) {
System.out.print("请输入年份(输入0退出):");
int year = input.nextInt();
if (year > 0) {
System.out.print("请输入月份(输入0退出):");
int month = input.nextInt();
int days = 0; //月总天数
//根据月份计算该月有多少天
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
//闰年判断:闰年年份能被4整除,不能被100整除,或能被400整除
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
days = 29;
}else {
days = 28;
}
break;
default:
//输入其他数字结束运行
isFlag = false;
input.close();
break;
}
//创建数组用来存储该月天数
char[] month_day = new char[days];
//创建Calendar类对象
Calendar c = Calendar.getInstance();
/*
根据输入的年月获得该月1号是星期几的信息
星期天:1,星期一:2,......星期六:7,以此类推
* */
c.set(year, month - 1, 1);
//将输入月份数-1即可得到真实月份,1月为0,二月为1,以此类推
//将号数设置为1方便日历第一行判断格式
int firstDay = c.get(Calendar.DAY_OF_WEEK); //获取输入月份的1号
/*
设置输出格式
上面的switch判断已设置月份输入1-12之外的数就结束运行,
这里的判断就不用加else了
*/
if (month > 0 && month <= 12) {
System.out.println("日\t\t一\t\t二\t\t三\t\t四\t\t五\t\t六");
switch (firstDay) {
//星期一
case 2:
System.out.print(" \t\t");
break;
//星期二
case 3:
System.out.print(" \t\t \t\t");
break;
//星期三
case 4:
System.out.print(" \t\t \t\t \t\t");
break;
//星期四
case 5:
System.out.print(" \t\t \t\t \t\t \t\t");
break;
//星期五
case 6:
System.out.print(" \t\t \t\t \t\t \t\t \t\t");
break;
//星期六
case 7:
System.out.print(" \t\t \t\t \t\t \t\t \t\t \t\t");
break;
//星期天不做判断,因为星期天的1号排在第一位
}
/*
* 本程序的核心:将日历输出格式排列好
* */
for (int i = 0, j = c.get(Calendar.DAY_OF_MONTH); i < month_day.length; i++, c.add(Calendar.DAY_OF_MONTH, 1)) {
//得到设置的1号的数据并将其自增
System.out.print((i + 1) + "\t\t");
//如果是星期六,则换行
if (c.get(Calendar.DAY_OF_WEEK) % 7 == 0) {
System.out.println();
}
}
System.out.println();
}
}else {
//若输入年份 <= 0,结束运行
isFlag = false;
input.close();
}
}
}
}
运行效果图
以上代码仅供参考
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)
Java输入年份和月份,得到该月日历(公历)