问题遇到的现象和发生背景
Java程序题目
2022年的元旦是星期六,打印输出2022年任意月份的月历(仿电脑日历的模式,仅公历)。
请教一下各位这个用java怎么写,谢谢!
Java程序题目
2022年的元旦是星期六,打印输出2022年任意月份的月历(仿电脑日历的模式,仅公历)。
请教一下各位这个用java怎么写,谢谢!
public static void main(String[] args) {
/*保存从1900年到当前年的前一年的所有天数
比如现在是2022年,那么声明的变量就表示1900年到2021年的所有天数
*/
int alldays = 0;
//保存每个月的天数
int monthdays = 0;
//保存余数remainder(每个月份一号前面的空格数,总天数对7求余数)
int remainder = 0;
//保存当前年份
int nowyear = 2022;
//保存当前月
System.out.println("请输入打印月份");
Scanner scanner=new Scanner(System.in);
int nowmonth = scanner.nextInt();
//我们来计算从1900年到2021年的所有的天数
for (int i =1900;i < nowyear;i++){
//在这我们要判断一下年份是不是闰年,是闰年我们就给天数加366
if (i % 4 ==0&&i %100 != 0||i %400 ==0){
alldays += 366;
}
//如果不是闰年就给天数加上365
else{
alldays += 365;
}
}
//计算到当前月的天数1,3,5,7,8,10,11,一个月是31天4,6,9,11,一个月是30天,闰年2月29,平年28
for (int i = 1;i < nowmonth;i++){
if (i == 1||i == 3||i == 5||i == 7||i == 8||i == 10||i == 11){
alldays += 31;
}else if (i == 4||i == 6||i == 9||i == 12){
alldays += 30;
}else if (nowyear %4 ==0&&nowyear %100 != 0||nowyear % 400 ==0){
alldays += 29;
}else{
alldays += 28;
}
}
//月份前面的空格计算.所有的天数对7取余
remainder = alldays%7;
// System.out.println(remainder);
//计算本月份的天数
if (nowmonth == 1||nowmonth == 3||nowmonth == 5||nowmonth == 7||nowmonth == 8||nowmonth == 10||nowmonth == 11){
monthdays = 31;
}else if (nowmonth == 4||nowmonth == 6||nowmonth == 9||nowmonth == 12){
monthdays = 30;
}else if (nowyear %4 ==0&&nowyear %100 != 0||nowyear % 400 ==0){
monthdays = 29;
}else{
monthdays = 28;
}
//System.out.println(monthdays);
System.out.print("一\t二\t三\t四\t五\t六\t日\t");
System.out.println();
//打印前面的空格
for (int i = 1;i <= remainder;i++){
System.out.print("\t");
}
//打印月份的号数
for (int i = 1;i <= monthdays;i++){
//在这我们要提醒,我们日期的打印的时候,是对余数加上号数对7取余,满7换行,余数不为0就不换行,为0就换行
if ((remainder +i) % 7 == 0 ){
System.out.println(i+"\t");
}else{
System.out.print(i+"\t");
}
}
}