java 万年历
来源:互联网 发布:重庆网络审批平台 编辑:程序博客网 时间:2024/05/21 05:23
需求分析
寻求:输入一个年份,再输入一个月份,把那个月的日历打印出来,(1900年1月1日是星期一)。“`
寻求分析:
a:先输出提示语句,并接受用户输入的年、月。
b:根据用户输入的年,先判断是否是闰年。(闰年2月有29天,平年2月有28天);
C:根据用户输入的年来判断月的天数。
D:用循环计算用户输入的年份距1900年1月1日(星期一)的总天数。*
E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。*
F:相加D与E的天数,得到总天数。
G:用总天数来计算输入月的第一天的星期数。
H:根据G的值,格式化输出这个月的日历!(天数C)*
H提示:
1.如果当月1日如果不是周日先打印第一行,再打印后面的
(1)startDay=0~5,先打印若干个空格,startDay==0时,是星期一,应该在星期日处打印一个空格,以此类推[0~startDay+1)
(2)再打印第一行的日期[1,7-startDay)
(3)打印换行
(4)第一行打印的天数为:1~(6-startDay),所以第二行从7-startDay开始打印,打印到当月总天数为止,每7个换行
运算结果
代码
/*Calendar.java功能:输入一个年份,再输入一个月份,把那个月的日历打印出来,(1900年1月1日是星期一)。version author UpdateTime Change point----------------------------------------v1.0 bobby 2017.11.17 初稿v1.1 bobby 2017.11.18 修改计算周末空格错误问题*/import java.util.Scanner;public class Calendar{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int yearDay = 0; int monDay = 0; //到1月1 总天数 int monCurrentDay = 0; //月份天数 int allDay = 0; int week = 0; while(true){ System.out.println("请输入年份"); int year = sc.nextInt(); System.out.println("请输入月份"); int month = sc.nextInt(); if(year < 1900 && month < 1 && month >12){ System.out.println("输入错误"); continue; } Title(year,month); yearDay = calculateYear(year); monDay = calculateMonth(year,month); //System.out.println("年天数:"+yearDay+"月天年"+monDay); allDay = yearDay + monDay; week = calculateWeek(allDay); monCurrentDay = calculateCurrentMonth(year,month); calendarPrint(week,monCurrentDay); break; } } //打印日历的头部 public static void Title(int year,int mom){ System.out.println(" "+year+"年"+mom+"月"); System.out.println("----------------------------------------------------------"); System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); } //打印日历 public static void calendarPrint(int week,int monthday){ //打印前面空格 for(int i=0;i<week;i++){ System.out.print(" "+"\t"); } //打印数字 for(int j=1;j<= monthday;j++){ System.out.print(" "+j+" "+"\t"); if((week+j)%7 == 0) System.out.println(); } } //计算是否是闰年 public static boolean leapyear(int year){ if((year%4 == 0 && year%100 != 0) || year%400 == 0){ return true; } return false; } //计算年的天数(距离1900年) public static int calculateYear(int year){ int sumDays = 0; for(int i=1900;i<year;i++){ //判断是否为闰年 if(leapyear(i)){ sumDays += 366; }else{ sumDays += 365; } } return sumDays; } //计算当前的月的天数 public static int calculateCurrentMonth(int year,int month){ int day = 0; //判断是否为闰年 switch(month){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: day = 31; break; case 4: case 6: case 9: case 11: day = 30; break; case 2: if(leapyear(year)){ day = 29; }else{ day = 28; } break; } return day; } //计算这个月到1月1号多少天 public static int calculateMonth(int year,int month){ int day = 0; for(int i=1;i<month;i++){ day += calculateCurrentMonth(year,i); } return day; } //判断是星期几 public static int calculateWeek(int days){ int day = 0; day = (days+1)%7 ; return day; } }
阅读全文
0 0
- java万年历
- java 万年历
- Java万年历
- JAVA万年历
- java 万年历
- java万年历
- java万年历
- java万年历
- 【java】万年历
- java--万年历
- JAVA万年历
- java 万年历
- JAVA 万年历
- Java万年历
- java 万年历
- java万年历
- java 万年历Demo
- java输出万年历
- IO流操作工具类(不断更新中)
- C语言---数组
- CNN卷积神经网络
- 一点一点的积累算法JAVA版之希尔排序(最小增量排序)
- 简析 React Native 用户反馈功能实现
- java 万年历
- Syntax error, annotations are only available if source level is 1.5 or greater.
- node.js基础API(一):Buffer
- 看单片机和数字电路怎么抗干扰
- String的Intern方法探析
- C小知识点 : 无符号数与有符号数运算
- Python SMTP 发送带附件电子邮件
- idea快捷键
- 利用JpGraph,可视化数据库中的数据