用java写一个简单的动态日历

动态日历

1.先创建我们需要的几个数据

1.首先我们要得到几个数据:
年份,月份,天数,星期
2. 年份和月份从控制台输入,天数和星期需要写两个方法来得到;
3. 部分代码
部分代码

2.写一个方法用来得到每月的天数

1.这里使用了switch语句用来得到每个月的天数
2.同时使用了if语句判断是否为闰年,由于闰年与平年只有2月份的天数有区别,所以只在case 2做判断即可
3.可以选择单独写一个方法用来判断是否为闰年
方法代码

3.选一个特定的日期作为该动态日历的参考系

1.这里建议选择1990年1月1号作为参考系,因为1990年1月1号正好是星期1
1990年1月1号

4.写一个方法用来得到某年某月的1号距离1990.1.1过去了几天

1.这里用到了上一个方法
2.这里又一次进行了是否为闰年的判断
方法代码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;
}

}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值