日历小项目

打印一个月日历

import java.util.Scanner;
public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int allYearDays=0;                  
		//保存从1900年到当前年的前一年所有天数
		int allMonthDays=0;                 
		//保存当前年当前月份前面所有月份的天数
		int monthDays=0;                    
		//保存每个月的天数
		int remainder=0;                    
		//保存余数
		int nowYear=2022;                   
		//保存当前年份
		int nowMonth=9;                     
		//保存当前月份
		for (int i=1900;i<nowYear ;i++ )    
		//计算从1900年到前一年的所有天数
		{
			if ((i%4==0&&i%100!=0)||(i%400==0))
			//累加天数
			{
				allYearDays+=366;
			}
			else
			{
				allYearDays+=365;
			}
		}
		for (int i=1;i<nowMonth ;i++ )
		//计算当前年当前月份前面所有的天数
		{
			if (i==4||i==6||i==9||i==11)
			{
				allMonthDays+=30;
			}
			else if (i==2)
			{
                if ((nowYear%4==0&&nowYear%100!=0)||(nowYear%400==0))
				{
					allMonthDays+=29;
				}
				else
				{
					allMonthDays+=28;
				}
			}
			else
			{
				allMonthDays+=31;
			}
		}
		/*到此处:计算出从1900到当前年前面所有年份的天数
		和当前月前面所有月份的天数。
		*/

		//接下来计算出当前月份前面的空格就可以确定一号对应的星期
		remainder=(allYearDays+allMonthDays)%7;
		System.out.println(remainder);

		//计算当前月份的天数

        if (nowMonth==4||nowMonth==6||nowMonth==9||nowMonth==11)
			{
				monthDays+=30;
			}
			else if (nowMonth==2)
			{
                if ((nowYear%4==0&&nowYear%100!=0)||(nowYear%400==0))
				{
					monthDays+=29;
				}
				else
				{
					monthDays+=28;
				}
			}
			else
			{
				monthDays+=31;
			}


		//打印当前月份的日历
		System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t");
        System.out.println();
		
		//打印月份前面的空格
		for (int i=0;i<remainder ;i++ )
		{
			System.out.print("\t");         
		}

		//打印号数
		for (int i=1;i<=monthDays ;i++)
		{
			if ((i+remainder)%7==0)
			{
				System.out.println("  "+i+"\t\n");
			}
			else
			{
				System.out.print("  "+i+"\t");
			}
		}
	}
}

打印一年的日历

import java.util.Scanner;
public class Hello//定义一个类
{
	public static void main(String [] args)
	{
		int allYearDays=0;                  
		//保存从1900年到当前年的前一年所有天数
		int [] allMonthDays=new int [12];                 
		//保存当前年当前月份前面所有月份的天数
		int [] monthDays=new int [12];                    
		//保存每个月的天数
		int [] remainder=new int [12];                    
		//保存余数
		int nowYear=2022;                   
		//保存当前年份
		for (int i=1900;i<nowYear ;i++ )    
		//计算从1900年到前一年的所有天数
		{
			if ((i%4==0&&i%100!=0)||(i%400==0))
			//累加天数
			{
				allYearDays+=366;
			}
			else
			{
				allYearDays+=365;
			}
		}


		//计算当前年当前月份前面所有的天数
		for (int nowMonth=1;nowMonth<=12 ;nowMonth++)
		{
		for (int i=1;i<nowMonth ;i++ )
		{
			if (i==4||i==6||i==9||i==11)
			{
				allMonthDays[nowMonth-1]+=30;
			}
			else if (i==2)
			{
                if ((nowYear%4==0&&nowYear%100!=0)||(nowYear%400==0))
				{
					allMonthDays[nowMonth-1]+=29;
				}
				else
				{
					allMonthDays[nowMonth-1]+=28;
				}
			}
			else
			{
				allMonthDays[nowMonth-1]+=31;
			}
		}
		}
		/*到此处:计算出从1900到当前年前面所有年份的天数
		和当前月前面所有月份的天数。
		*/
		

		//接下来计算出当前月份前面的空格就可以确定一号对应的星期
		for (int nowMonth=1;nowMonth<=12 ;nowMonth++ )
		{
		remainder[nowMonth-1]=(allYearDays+allMonthDays[nowMonth-1])%7;
		}

		//计算当前月份的天数
        for (int nowMonth=1;nowMonth<=12 ;nowMonth++ )
        {
        if (nowMonth==4||nowMonth==6||nowMonth==9||nowMonth==11)
			{
				monthDays[nowMonth-1]+=30;
			}
			else if (nowMonth==2)
			{
                if ((nowYear%4==0&&nowYear%100!=0)||(nowYear%400==0))
				{
					monthDays[nowMonth-1]+=29;
				}
				else
				{
					monthDays[nowMonth-1]+=28;
				}
			}
			else
			{
				monthDays[nowMonth-1]+=31;
			}
		}

	
    
		//打印当前月份的日历
		for (int nowMonth=1;nowMonth<=12 ;nowMonth++ )
		{	
		System.out.println();
		System.out.println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日\t");
        System.out.println();
		
		//打印月份前面的空格
		for (int i=0;i<remainder[nowMonth-1] ;i++ )
		{
			System.out.print("\t");         
		}

		//打印号数
		for (int i=1;i<=monthDays[nowMonth-1] ;i++)
		{
			if ((i+remainder[nowMonth-1])%7==0)
			{
				System.out.println("  "+i+"\t\n");
			}
			else
			{
				System.out.print("  "+i+"\t");
			}
		 }
	   }
    }
}

用了数组,能否不用数组完成?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值