这个题目说真的有点难搞哦,又不调用函数,思路想到自闭,很不幸我还是做出来了
- 第一步肯定是先获取键盘输入的年月
- 计算1900年到你需要打印年的天数(为什么是1900年百度哦)
- 计算一月到你打印的那个月的天数
- 计算打印的那个月有多少天
- 用总天数去和7去余数,用于日历前面空格,为什么与7取,因为我们还要判断是星期几
然后使用for循环打印
我们这边打印一个2022年5月的日历,先给大家看看百度的日历
当然我们的代码是做不出这样的,我们看看代码怎么写的import java.util.Scanner; public class Work4 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入年份"); int year = sc.nextInt(); System.out.println("请输入月份"); int month = sc.nextInt(); int total=0; System.out.println("---------"+year+"年"+month+"月---------\n"); System.out.println("一\t二\t三\t四\t五\t六\t日"); //计算1900年到任一年份一月一日是星期几 //注意比如year是2022年计算到的是2021年最后的天数 for(int i =1900;i<year;i++){ //判断是否是闰年 if((i%4)==0 && (i%100) !=0 || (i%400)==0){ total+=366; }else { total+=365; } } //如果当年是闰年 boolean pdyear = (year % 4) == 0 && (year % 100) != 0 || (year % 400) == 0; //计算一月到你需要的月份的天数有多少 for(int i = 1; i<month; i++){ //小月就是30 if(i==4||i==6||i==9||i==11){ total+=30; }else if(i==2){ //二月这里需要区分是什么年,上面表达式计算布尔值 if(pdyear){ total+=29; }else{ total+=28; } //否则就是大月 }else{ total+=31; } } //计算出那个月有多少天 int day; if(month==4||month==6||month==9||month==11){ day=30; }else if(month==2){ if(pdyear){ day=29; }else{ day=28; } }else{ day=31; } //计算出那个月份的1号是星期几 int week = (total+1)%7; //计算需要空出的空间 int tab; if (week == 0) { tab=6; }else { tab = week-1; } for(int t = 1;t<=tab;t++){ System.out.print("\t"); } for(int d = 1;d<=day;d++){ if((total+d)%7==0){ System.out.println(d); }else{ System.out.print(d+"\t"); } } } }
我们看一下运行结果,不会的评论,这边邮件提醒回复快
评论 (0)