java程序写一个万年历(自1905年开始)
package com.lixiangqian.wannianli;
import java.util.Scanner;
/**
* 栗向前——2020年3月9日
* 制作万年历:
* 思路
* 1.算起始月到输入月共多少天。
* 2.对应的起始星期几。
* 3.算输出几个“\t”。
* 4.算打印多少天(当前月)
* 5.换行
* @author Administrator
*
*/
public class wannianli {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.print("请输入年份(自1905年开始):");
int nian=input.nextInt();
System.out.print("请输入月份(1月~12月):");
int yue=input.nextInt();
//判断输入是否大于1905
if(nian>=1905){
//算整年共多少天:1905年到键盘输入的年份的前一年(过的整年)
int zongTianShu=0;
for(int i=1905;i<nian;i++){
if((i%4==0&&i%100!=0)||i%400==0){
zongTianShu+=366;
}else{
zongTianShu+=365;
}
}
//算整月共多少天(1月到键盘输入月的前一个月)
for(int i=1;i<yue;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12){//大月累加31天
zongTianShu+=31;
}else if(i==4||i==6||i==9||i==11){//小月累加30天
zongTianShu+=30;
}else if(i==2){
if((i%4==0&&i%100!=0)||i%400==0){//闰月累加29天
zongTianShu+=29;
}else{//非闰月累加28天
zongTianShu+=28;
}
}
}
//算1号从星期几开始显示
int mangDay=zongTianShu%7;
// System.out.println(mangDay);
//算输入月要打印多少天
int daYin=0;
if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12){
daYin+=31;
}else if(yue==4||yue==6||yue==9||yue==11){
daYin+=30;
}else if(yue==2){
if((nian%4==0&&nian%100!=0)||nian%400==0){
daYin+=29;
}else{
daYin+=28;
}
}
//开始打印
System.out.println();
System.out.println("==========================="+nian+"年"+yue+"月"+"===========================");
System.out.println();
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
System.out.println();
//先打印“\t”
for(int i=1;i<=mangDay;i++){
System.out.print("\t");
}
//打印输入月的天数
int count=mangDay;
for(int i=1;i<=daYin;i++){
System.out.print(i+"\t");
count++;
if(count%7==0){
System.out.println();
}
}
}else{
System.out.println("输入错误,程序结束!");
}
}
}
输入想要查询的年份、月份后控制台打印结果为: