Java不使用calendar类和其余的类 只调用Scanner类写一个日历

版权声明:本文为博主原创文章,未经博主允许也可随意转载。 https://blog.csdn.net/qq_35619409/article/details/63253624

作业题目

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");

       }

    }

 

}

 


猜你喜欢

转载自blog.csdn.net/qq_35619409/article/details/63253624