作业题目
java起步,小白一个,只是分享心得和加深印象
*********************************************************************************
作业要求
构建无参的函数和有参的函数分别输出每年的日历
输入
年份 和 该年第一天是星期几的数字(我设置星期天为0)
输出
该年全年的日历
代码如下,仅供参考:
package mycalendar;
import java.util.Scanner;
public class mycalendar{
static int year;
static int fdayofyear;
int[] fdayofmonth;
int[] dayamount;
/**
* 主函数 输入年份以及调用无参有参构造函数
* @param args
*/
public static void main(String[] args){
mycalendar calendar1= new mycalendar();
Scanner n= new Scanner(System.in);
System.out.println("\n\n请输入您想要查询的年份:");
year=n.nextInt();
System.out.println("\n请输入您所查询年份第一天的星期:");
fdayofyear=n.nextInt();
mycalendar calendar2= new mycalendar(year,fdayofyear);
}
/**
* 无参构造方法
*/
public mycalendar(){
year=2017;
fdayofyear=0;
this.dayamount=caculatemonthday(year);
this.fdayofmonth=fdayofeverymonth();
for(int i=1;i<13;i++) //循环输出月历,实现年历的输出
{
printamount(i);
}
}
/**
* 有参构造函数
* @param year
* @param fdayofyear
*/
public mycalendar(int year,int fdayofyear){
this.dayamount=caculatemonthday(year);
this.fdayofmonth=fdayofeverymonth();
for(int i=1;i<13;i++) //循环输出月历,实现年历的输出
{
printamount(i);
}
}
/**
* 计算每个月的天数
* @param year
* @return
*/
public int[] caculatemonthday(int year){
int[] dayamount = new int[13]; //必须new以后才可以实现对全局变量的修改
int[] leapyear={0,31,29,31,30,31,30,31,31,30,31,30,31};
int[] nleapyear={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isleapyear(year))
for(int i=0;i<13;i++)
dayamount[i]=leapyear[i]; //计算闰年每个月的天数
else
for(int i=0;i<13;i++)
dayamount[i]=nleapyear[i]; //计算非闰年每个月的天数
return dayamount;
}
/**
* 计算每个月的天数和第一天的星期
* @return
*/
public int[] fdayofeverymonth(){
int[] fdayofmonth=new int[13]; //与上同理
fdayofmonth[1] = fdayofyear;
for(int j=2;j<13;j++){
fdayofmonth[j]=(fdayofmonth[j-1]+dayamount[j-1])%7; //计算每个月第一天的星期
}
return fdayofmonth;
}
/**
* 计算闰年
* @param year
* @return
*/
public boolean isleapyear(int year){
if(year%4==0&&year%100!=0||year%400==0)
return true;
else
return false;
}
/**
* 输出月历
* @param month
*/
public void printamount(int month){
System.out.println("\n\t\t\t"+month+"月");
System.out.println("星期天\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
for(int i=0;i<fdayofmonth[month];i++)
System.out.print("\t");
for(int j=1;j<=dayamount[month];j++){
System.out.print(j+"\t");
if((fdayofmonth[month]+j)%7==0)
System.out.println("\n");
}
}
}