import java.util.Calendar;
import java.util.GregorianCalendar;public class Month{
int year;
int month;
int day;
Calendar obj = Calendar.getInstance();
Month(int year,int month)
{
this.year=year;
this.month=month;
}
String monthIndex()
{
String[] Month = { "1","2","3","4","5","6","7","8","9","10","11","12"};
return Month[month];

}
void show ()
{

System.out.println("显示日历");
System.out.println("\t\t\t"+year+" 年 "+monthIndex()+" 月");
System.out.println("\t日\t一\t二\t三\t四\t五\t六");
//先用set(year,month,1);方法获得当月第一天是星期几
obj.set(year,month,1);
for (int i=0;i<obj.get(Calendar.DAY_OF_WEEK)-1;i++)
{
System.out.print("\t");
}
//为什么我在这里用set(year,month+1,0);方法时,month得加上1不然得出来的天数是上一个月的天数     
                  //为什么我前面用set(year,month,1)时,能正确的得出这个月的第一天是星期几
                  //set(year,month,0)方法里面的0指得是什么意思啊
                  obj.set(year,month+1,0);
day=obj.get(Calendar.DAY_OF_MONTH);
for(int j=1;j<=day;j++)
{
System.out.print("\t"+j);
obj.set(year,month,j);
if(obj.get(Calendar.DAY_OF_WEEK)==7)
{
System.out.println();
}
}
}
public static void main(String[] args)
{
int year;
int month;
Calendar today = Calendar.getInstance();
year = today.get(Calendar.YEAR);
month = today.get(Calendar.MONTH)+1;

Month showCal = new Month(year, month-1);
showCal.show();
}
}

解决方案 »

  1.   

    import java.util.Calendar;
    import java.util.GregorianCalendar;public class Month { int year;
    int month;
    int day;
    Calendar obj = Calendar.getInstance(); Month(int year, int month) {
    this.year = year;
    this.month = month;
    } String monthIndex() {
    String[] Month = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};
    return Month[month];
    } void show() {
    System.out.println("显示日历");
    System.out.println("\t\t\t" + year + " 年 " + monthIndex() + " 月");
    System.out.println("\t日\t一\t二\t三\t四\t五\t六");
    // 先用set(year,month,1);方法获得当月第一天是星期几
    obj.set(year, month, 1);
    for (int i = 0; i < obj.get(Calendar.DAY_OF_WEEK) - 1; i++) {
    System.out.print("\t");
    }
    // 为什么我在这里用set(year,month+1,0);方法时,month得加上1不然得出来的天数是上一个月的天数
    // 为什么我前面用set(year,month,1)时,能正确的得出这个月的第一天是星期几
    // set(year,month,0)方法里面的0指得是什么意思啊
    obj.set(year, month + 1, 0);
    day = obj.get(Calendar.DAY_OF_MONTH);
    for (int j = 1; j <= day; j++) {
    System.out.print("\t" + j);
    obj.set(year, month, j);
    if (obj.get(Calendar.DAY_OF_WEEK) == 7) {
    System.out.println();
    }
    }
    } public static void main(String[] args) {
    int year;
    int month;
    Calendar today = Calendar.getInstance();
    year = today.get(Calendar.YEAR);
    month = today.get(Calendar.MONTH) + 1;
    Month showCal = new Month(year, month - 1);
    showCal.show();
    }}
      

  2.   

    建议去看看Canlender的源代码 ..也许对你有帮助
      

  3.   

    obj.set(year, month + 1, 0); 将 Calendar 设置为 month + 1 月第 0 日,即 month 月最后一天的日期。向前借位了。