【Java基础5】java打印万年历,提示:1900年1月1日是星期一
线索:1900年1月1日 – 星期一
思路:
1、获取1900年1月1日 到输入年输入月的总天数
2、总天数%7 获得输入年输入月的第一天是星期几
3、打印万年历
问题1:计算总天数
思路:
1、先算1900年-输入年前一年 的总天数
2、再算1月-输入月前一月的总天数
3、1和2的总天数之和再加1
问题2:计算输入年的输入月的第一天是星期几
思路:
1、总天数%7,得出星期几,值为0时置为7,意为星期日
问题3:如何打印 ?
思路:
1、先打印第一排的星期,固定排版
2、根据每月第一天为星期几打印空格,例如,第一天为星期三,使用水平制表打印两个空格
3、根据当月天数打印日期
4、每周进行换行
//代码:
import java.util.Scanner;
public class Test01 {public static void main(String[] args) {// TODO Auto-generated method stub//1900年1月1日 – 星期一,打印万年历int allDayOfYear=0;//当年之前的天数int allDayOfMonth=0;//当月之前的天数int dayOfMonth=0;//本月的天数int allday=0;//天数总和int weekDay=0;//本月1号是星期几int blankSpace=0;Scanner scan=new Scanner(System.in);System.out.println("请输入当前年:");int year=scan.nextInt();System.out.println("请输入当前月:");int month=scan.nextInt();//计算本年前的天数for(int i=1900;i<year;i++){if((i%4==0&&i%100!=0)||i%400==0){allDayOfYear+=366;}else{allDayOfYear+=365;}}//计算本月前的天数for(int j=1;j<month;j++){switch(j){case 1: case 3:case 5: case 7: case 8:case 10: case 12:allDayOfMonth+=31;break;case 4:case 6:case 9:case 11:allDayOfMonth+=30;break;case 2:if((j%4==0&&j%100!=0)||j%400==0){allDayOfMonth+=29;}else{allDayOfMonth+=28;}break;}}//计算本月的天数switch(month){case 1: case 3:case 5: case 7: case 8:case 10: case 12:dayOfMonth=31;break;case 4:case 6:case 9:case 11:dayOfMonth=30;break;case 2:if((year%4==0&&year%100!=0)||year%400==0){dayOfMonth=29;}else{dayOfMonth=28;}break;}//计算本月1号是星期几allday=allDayOfYear+allDayOfMonth+1;weekDay=allday%7;if(weekDay==0){weekDay=7;}System.out.println(weekDay);//输出 System.out.println("一"+"\t"+"二"+"\t"+"三"+"\t"+"四"+"\t"+"五"+"\t"+"六"+"\t"+"日");for(int i=1;i<weekDay;i++){System.out.print(" "+"\t");blankSpace++;}for(int k=1;k<dayOfMonth;k++){System.out.print(k+"\t");blankSpace++;if(blankSpace==7){System.out.println();blankSpace=0;}}}}
运行结果:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
