java 打印万年历_使用Java实现万年历的格式打印

这是一个Java程序,用于实现万年历的打印。程序包括判断闰年、计算月份天数、计算某日是星期几以及打印日历的方法。用户可以输入年月日,程序将输出对应的日历并提示是否继续显示下一个月的万年历。
摘要由CSDN通过智能技术生成

import java.util.Scanner;

/**

* 1. 定义万年历类,定义年月日属性

2.编写接收年判断是否是闰年的方法,并返回一个布尔值

3.编写接收年月日计算总天数方法,并返回总天数

4.编写接收年月日输出该日是星期几方法,已知1900年1月1日是星期一。

5.编写可无限循环接收年月日打印该月日历方法。

* @author caiyu

*

*/

public class shixun10 {

Scanner i = new Scanner(System.in);

public int year;

public int month;

public int day;

// 判断是否为闰年

public boolean isRun(int year) {

boolean isRn = false;

isRn = ((year % 4 == 0) && !(year % 100 == 0) || year % 400 == 0);

return isRn;

}

// 该月有多少天

public int monthSumDay(int yaar, int month) {

int day = 0;

switch (month) {

case 2:

if (isRun(year)) {

day = 29;

} else {

day = 28;

}

break;

case 4:

case 6:

case 9:

case 11:

day = 30;

break;

default:

day = 31;

break;

}

return day;

}

// 得到至这一天是这一年的多少天

public int totalDay(int year, int month, int day) {

int sumDay = 0;// 总天数

// 难点一

for (int i = 1900; i < year; i++) {

if (isRun(i)) {

sumDay = sumDay + 366;// 闰年366天

} else {

sumDay = sumDay + 365;// 平年365天

}

}

// 计算当年距离1900年1月1日的总天数

// 再算当年的总天数

int beforeDay = 0;

int d = 0;// 当月日期数

// 难点二

for (int i = 1; i < month; i++) {

switch (i) {

case 2:

if (isRun(year)) {

d = 29;

} else {

d = 28;

}

break;

case 4:

case 6:

case 9:

case 11:

d = 30;

break;

default:

d = 31;

break;

}// switch 结束

beforeDay = beforeDay + d;

}// 当年的总天数 循环结束

// 累加求出距离 1900年1月1日的总天数

sumDay = sumDay + beforeDay;

return sumDay;

}

// 接收年月日输出该日是星期几方法,已知1900年1月1日是星期一

public int weekNum(int year, int month, int day) {

int thisMonthFirstDay = 0;// 当月第一天是星期几

int temp = 1 + totalDay(year, month, day) % 7;

if (temp != 7) {

thisMonthFirstDay = temp;

}

return thisMonthFirstDay;

}

// 接收年月日打印该月日历方法

public void printCalendar(int year, int month, int day) {

// 调用上面的方法

int mfd = weekNum(year, month, day);

int sumDay = totalDay(year, month, day);

int monthSum = monthSumDay(year, month);

/* 格式输出日历 */

System.out.println("\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for (int i = 0; i < mfd; i++) {

System.out.print("\t");

}

for (int i = 1; i <= monthSum; i++) {

System.out.print(i + "\t");

// 难点三

if ((sumDay + i - 1) % 7 == 5) {// 是星期六 则要换行

System.out.println();

}

}

System.out.println();

}

// 显示万年历

public void show() {

System.out.println("******JVav万年历程序*****");

String isRun = "y";

while (isRun != "n") {

System.out.print("请输入年:");

int year = i.nextInt();

System.out.print("请输入月:");

int month = i.nextInt();

System.out.print("请输入日:");

int day = i.nextInt();

this.printCalendar(year, month, day);

System.out.print("\n是否继续(y/n):");

isRun = i.next();

}

}

}四、关键代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值