各位,怎样才能用Calendar输入一个完整的日历亚?
或者怎样才能用这个类,获得指定月份的第一天是星期几?

解决方案 »

  1.   

    Calendar c = Calendar.getInstance();
      

  2.   

    import java.util.Calendar;
    class GergorianCalendar
    {
    Calendar canObj;
    GergorianCalendar()
    {
    canObj=Calendar.getInstance();
    }
    void generate()
    {
    System.out.println("显示日历");
    System.out.println("\t\t\t"+canObj.get(Calendar.YEAR)+" 年 "+(canObj.get(Calendar.MONTH)+1)+" 月");
    System.out.println("\n\t日\t一\t二\t三\t四\t五\t六");
    //
    //canObj.set(canObj.YEAR,year);
    //canObj.set(canObj.MONTH,month-1);
    canObj.set(canObj.DATE,1);
    //
    //int [] monthArray={1,2,3,4,5,6,7,8,9,10,11,12};
    //int [] maxDayOFMonthArray={28,29,30,31};
    int maxDayOfMonth;
    switch(canObj.get(Calendar.MONTH)+1)
    {
    case 2:
    {
    maxDayOfMonth=(28+this.isLeapYear(canObj.get(Calendar.YEAR)));
    break;
    }
    case 4:
    case 6:
    case 9:
    case 11:
    {
    maxDayOfMonth=30;
    break;
    }
    default:
    {
    maxDayOfMonth=31;
    }
    }
    System.out.print("\t");
    for(int i=1;i<canObj.get(canObj.DAY_OF_WEEK);i++)
    {
    System.out.print("\t");
    }

    for(int i=1;i<=maxDayOfMonth;i++)
    {
    if(canObj.get(canObj.DAY_OF_WEEK)==7)
    {
    System.out.print(canObj.get(canObj.DATE)+"\n\t");
    }
    else
    {
    System.out.print(canObj.get(canObj.DATE)+"\t");
    }
    canObj.set(canObj.DATE,i+1);
    }
    }
    void generate(int month,int year)
    {
    System.out.println("显示日历");
    System.out.println("\t\t\t"+year+" 年 "+month+" 月");
    System.out.println("\n\t日\t一\t二\t三\t四\t五\t六");
    //
    canObj.set(canObj.YEAR,year);
    canObj.set(canObj.MONTH,month-1);
    canObj.set(canObj.DATE,1);
    //
    //int [] monthArray={1,2,3,4,5,6,7,8,9,10,11,12};
    //int [] maxDayOFMonthArray={28,29,30,31};
    /*int maxDayOfMonth;
    switch(month)
    {
    case 2:
    {
    maxDayOfMonth=(28+this.isLeapYear(year));
    break;
    }
    case 4:
    case 6:
    case 9:
    case 11:
    {
    maxDayOfMonth=30;
    break;
    }
    default:
    {
    maxDayOfMonth=31;
    }
    }*/
    System.out.print("\t");
    for(int i=1;i<canObj.get(canObj.DAY_OF_WEEK);i++)
    {
    System.out.print("\t");
    }

    for(int i=1;i<=31;i++)
    {
    if(canObj.get(canObj.DAY_OF_WEEK)==7)
    {
    System.out.print(canObj.get(canObj.DATE)+"\n\t");
    }
    else
    {
    System.out.print(canObj.get(canObj.DATE)+"\t");
    }
    canObj.set(canObj.DATE,i+1);
    if(canObj.get(canObj.DATE)==1)
    {
    break;
    }
    }
    }
    static int isLeapYear(int year)
    {
    if((year%4==0 && year%100!=0) || (year%400==0))
    {
    return 1;
    }
    else
    {
    return 0;
    }
    }
    }
    public class MonthTest
    {
    public static void main(String [] argv)
    {
    GergorianCalendar gerObj=new GergorianCalendar();
    try
    {
    gerObj.generate(Integer.parseInt(argv[0]),Integer.parseInt(argv[1]));     }
        catch(Exception e)
        {
         gerObj.generate();
        }
    }
    }