打印一个月日历
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");
}
}
}
}
}
用了数组,能否不用数组完成?