GregorianCalendar date1 = new GregorianCalendar();   //构造日历对象
 int today =date1.get(Calendar.DAY_OF_MONTH);         //调用get方法获取当日
 int month = date1.get(Calendar.MONTH);               //调用get方法获取当月
 date1.set(Calendar.DAY_OF_MONTH,1);                  //设置date1为这个月的第一天
 int weekday =date1.get(Calendar.DAY_OF_WEEK);        //得到这一天是星期几,如果这个月的第一天是星期天,那么变量weekday被设置为1,如果是星期1为2,以此类推。
 System.out.println("Sun Mon Tue Wed Thu Fri Sat");   //打印标题头
 for (int i = Calendar.SUNDAY; i<weekday; i++)        //将1号前面的用空格代替
 {
 System.out.print("    ");
 }
 do
 {
int day =date1.get(Calendar.DAY_OF_MONTH);        //取得当前日期
if (day <10) System.out.print(" ");               //判断小于10的前面加空格保持格式  
System.out.print(day);
if (day == today)                                 //判断如果日期是当前日期后面加*
System.out.print("* ");
else
System.out.print("  ");
if (weekday == Calendar.SATURDAY)                   //如果weekday是星期六则换行;
System.out.println();
date1.add(Calendar.DAY_OF_MONTH, 1);
weekday =date1.get(Calendar.DAY_OF_MONTH);
 }
 while(date1.get(Calendar.MONTH)==month);
 if(weekday != Calendar.SUNDAY)
 System.out.println();
-----------------------------------------------------------
结果如下
Sun Mon Tue Wed Thu Fri Sat
 1   2   3   4   5   6   7  
 8   9  10  11  12  13  14  15  16  17* 18  19  20  21  22  23  24  25  26  27  28 
-----------------------------------------------------------
希望的结果
Sun Mon Tue Wed Thu Fri Sat
 1   2   3   4   5   6   7  
 8   9  10  11  12  13  14
 15  16 17* 18  19  20  21 
 22  23 24  25  26  27  28  

解决方案 »

  1.   

    if (weekday == Calendar.SATURDAY)   这里的判断不对吧,应该是day == Calendar.SATURDAY 吧。
      

  2.   

    GregorianCalendar date1 = new GregorianCalendar(); // 构造日历对象
    int today = date1.get(Calendar.DAY_OF_MONTH); // 调用get方法获取当日
    int month = date1.get(Calendar.MONTH); // 调用get方法获取当月
    date1.set(Calendar.DAY_OF_MONTH, 1); // 设置date1为这个月的第一天
    int weekday = date1.get(Calendar.DAY_OF_WEEK); // 得到这一天是星期几,如果这个月的第一天是星期天,那么变量weekday被设置为1,如果是星期1为2,以此类推。
    System.out.println("Sun Mon Tue Wed Thu Fri Sat"); // 打印标题头
    for (int i = Calendar.SUNDAY; i < weekday; i++) // 将1号前面的用空格代替
    {
    System.out.print("    ");
    }
    do {
    int day = date1.get(Calendar.DAY_OF_MONTH); // 取得当前日期
    if (day < 10)
    System.out.print(" "); // 判断小于10的前面加空格保持格式
    System.out.print(day);
    if (day == today) // 判断如果日期是当前日期后面加*
    System.out.print("* ");
    else
    System.out.print("  ");
    if (weekday == Calendar.SATURDAY) // 如果weekday是星期六则换行;
    System.out.println();
    date1.add(Calendar.DAY_OF_MONTH, 1);
    weekday = date1.get(Calendar.DAY_OF_WEEK);//---这里要改成DAY_OF_WEEK---
    } while (date1.get(Calendar.MONTH) == month);
    if (weekday != Calendar.SUNDAY)
    System.out.println();
      

  3.   

    if (weekday%Calendar.SATURDAY == 0)
      

  4.   

    weekday =date1.get(Calendar.DAY_OF_MONTH);改成 date1.get(Calendar.DAY_OF_WEEK);