制作简单日历

来源:互联网 发布:2016禁毒知识网络大赛 编辑:程序博客网 时间:2024/05/23 16:56

你想知道某年某月某日是星期几吗?

当然,现在的我们借助手机和电脑都能轻松搞定这个问题,

但好奇的你想不想知道其中的奥妙呢?

下面就让我们用java语言一步一步实现!



思路:

核心:1900年1月1日到2016年8月1日的总天数模7得到的余数是几就是星期几,是0为星期日。

1,创建扫描仪

2,提示用户输入年份和月份并用变量接收

3,判断用户输入的年份是闰年还是平年,月份是大月还是小月

4,定义变量sum,计算总天数

   a,计算整年的天数,从1900年到用户输入年份的前一年,如果是闰年sum加上366天,否则加上365天

   b,计算整月的天数,从1月份到用户输入月份的前一个月,首先判断是否为二月份,如果是再判断是否为闰年,闰年29天,否则是      28天;其次再根据大月和小月分别加上31天或者30天。

   c,最后加1,因为要求某月的第一天是星期几,所以必须要加上。

5,求总天数模7的值,并根据值得大小求得某月1日是星期几。

6,求用户输入的月份的天数。

7,遍历星期,并在星期六处换行。


代码如下:


package Ch1;


import java.util.Scanner;


public class T1 {
public static void main(String[] args) {

Scanner input=new Scanner(System.in);
System.out.println("请输入年份:");
int year=input.nextInt();
System.out.println("请输入月份:");
int month=input.nextInt();

boolean isLeapYear=year%4==0&&year%100!=00||year%400==0;
boolean isSmallMonth=month==4||month==6||month==9||month==11;

int sum=0;
for (int i = 1900; i < year; i++) {
if (i%4==0&&i%100!=0||i%400==0) {
sum+=366;

}else{
sum+=365;
}
}
for (int y = 1; y < month; y++) {
if (y==2) {
if (isLeapYear) {
sum+=29;
}else{
sum+=28;
}
}else{
if (y==4||y==6||y==9||y==11) {
sum+=30;
}else{
sum+=31;
}
}
}
sum+=1;
int weekday=sum%7;
System.out.println("日\t一\t二\t三\t四\t五\t六");
for (int i = 0; i < weekday; i++) {
System.out.print("\t");
}
int monthDay=0;
if(month==2){
if (isLeapYear) {
monthDay=29;
}else
monthDay=28;
}else{
if (isSmallMonth) {
monthDay=30;
}else
monthDay=31;
}

for (int i = 1; i <=monthDay; i++) {
if (sum%7==6) {
System.out.print(i+"\n");

}else{
System.out.print(i+"\t");
}
sum++;
}
}

}




0 0
原创粉丝点击