编写万年历(要求输入年份和月份打印这个月的日历)
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 yearTotal=0; //计算跨年的天数(当年的不能算,不然整年的天数都加上了) for(int i=1900;i<year;i++){ //闰年加366 if(i%4==0&&i%100!=0||i%400==0){ yearTotal+=366; } //平年加365 else{ yearTotal+=365; } } //累计跨月总天数 int monthTotal=0; //记录每月的天数 int day=0; //i<=month方便后面计算的当月有多少天,但是计算这个月之前总天数时,不能加上本月,所以后面加总的时候要判断 for(int i=1;i<=month;i++){ switch(i){ case 2:day=year%4==0&&i%100!=0||i%400==0?29:28; break; case 4: case 6: case 9: case 11: day=30; break; default: day=31; //只要不等于当月的天数,则累计加总 if(i<month){ monthTotal+=day; } } } //记录本月1号是否被7整除,余数是多少,就是周几 int week=(yearTotal+monthTotal+1)%7; System.out.println("本月1号是周"+week); //1号是周几,前面对应就有几个\t,循环输入 System.out.println("日\t一\t二\t三\t四\t五\t六"); //打印1号前面的空格 for(int i=1;i<=week;i++){ System.out.print("\t"); } //打印每个月的日期数 for(int i=1;i<=day;i++){ System.out.println(i+"\t"); if(yearTotal+monthTotal+i%7==6){ //如果是周六则换行打印 System.out.println(); } } }