动态日历
1.先创建我们需要的几个数据
1.首先我们要得到几个数据:
年份,月份,天数,星期
2. 年份和月份从控制台输入,天数和星期需要写两个方法来得到;
3. 部分代码
2.写一个方法用来得到每月的天数
1.这里使用了switch语句用来得到每个月的天数
2.同时使用了if语句判断是否为闰年,由于闰年与平年只有2月份的天数有区别,所以只在case 2做判断即可
3.可以选择单独写一个方法用来判断是否为闰年
3.选一个特定的日期作为该动态日历的参考系
1.这里建议选择1990年1月1号作为参考系,因为1990年1月1号正好是星期1
4.写一个方法用来得到某年某月的1号距离1990.1.1过去了几天
1.这里用到了上一个方法
2.这里又一次进行了是否为闰年的判断
5.整理一下我们得到的数据
1.年份和月份
2.天数和日期
6.然后就可以愉快的写主代码了
代码如图
7.跑一下代码试试
emmmm感觉还行
8.全部代码
package 动态日历;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
// 首先我们要得到几个数据:年份;月份;天数;星期
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份和月份:");
int year,month;
year = sc.nextInt();
month = sc.nextInt();
int day,seed;
day = dayByMonth(year,month);
if(day<0) {
System.out.println("输入有错");
return;
}
seed = dayNumber(year,month)%7+1;
System.out.println("\t\t "+year+"年"+month+"月");
System.out.println("一\t二\t三\t四\t五\t六\t日");
for(int i=1;i<day+seed;i++) {
if(i<seed) {
System.out.print("\t");
}else{
System.out.print((i-seed+1)+"\t");
}
if(i%7==0) {
System.out.println("\n");
}
}
}
//接下来写一个方法,用来得到每月的天数,选择使用switch语句
public static int dayByMonth(int year,int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if(year%4==0&&year%100!=0||year%400==0) //判断是否是闰年
{
return 29;
}
else {
return 28;
}
}
return -1;
}
/*
* 以1990年的1月1号为参考时间
* 写一个方法判定某年某月的1号离1990年的1月1号过去了几天
*/
public static int dayNumber(int year,int month) {
int count = 0;
for(int i=1990;i<year;i++) {
if(year%4==0&&year%100!=0||year%400==0) {
count = count+366;
}else {
count = count+365;
}
}
for(int j=1;j<month;j++) {
count = count+dayByMonth(year,j);
}
return count;
}
}