import java.util.*;public class makeweeks {    public static void main(String[] args) {
// TODO 自动生成方法存根
Scanner input = new Scanner(System.in);
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int days = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days += 31;
break;
case 4:
case 6:
case 9:
case 11:
days += 30;
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days += 29;
} else {
days += 28;
}
break;
default:
System.out.println("您输入的月份有错,请重新输入!");
}
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");
int firstDayofMonth = (1 + days)%7;
for (int nullNo = 0; nullNo <firstDayofMonth ; nullNo++) {
System.out.print("\t");
}
for (int i = 1; i <= days; i++) {
System.out.print(i);
if ((i + days) % 7 == 6) {
System.out.print("\n");
} else {
System.out.print("\t");
}
} }}

解决方案 »

  1.   

    int firstDayofMonth = (1 + days)%7; 
    这个求出来的是一个月第一天的星期?
    这样不对吧.
      

  2.   

    public class Test{

        public static void main(String args[])  {
        
         System.out.println(getWeek(2009,9,1));
        }
         //求dYear年,dMonth月,dDay日是星期几:
        public static int getWeek(int dYear,int dMonth,int dDay){
         //从公元0年的1月1日到指定的日期经过的总天数:
          int days=0;
          //每月的天数,months[0]没有用:
          int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
          if(dYear%400==0||dYear%4==0&&dYear%100!=0){
              months[2]=29;
          }
          //以公元0年为基准,到参数所指定的日期过了多少天,一年按365天算,根据闰年数做相应的调整:
          days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
          //下面的循环把dMonth之前的月份的天数求出来:
          for(int i=1;i<dMonth;i++){
              days+=months[i];
          }
          //公元0年的1月1日是星期日:
          days+=dDay+6;
          return (days)%7;
      } 
    }你写万年历,如果不用java提供的Calendar类,这个算法估计是有用的.
      

  3.   


    import java.util.*; public class makeweeks {     public static void main(String[] args) { 
    // TODO 自动生成方法存根 
         Scanner input = new Scanner(System.in); 
         System.out.print("请输入年份:"); 
         int year = input.nextInt(); 
         System.out.print("请输入月份:"); 
         int month = input.nextInt(); 
         int days = 0; 
         switch (month) { 
         case 1: 
         case 3: 
         case 5: 
         case 7: 
         case 8: 
         case 10: 
         case 12: 
         days += 31; 
         break; 
         case 4: 
         case 6: 
         case 9: 
         case 11: 
         days += 30; 
         break; 
         case 2: 
         if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { 
         days += 29; 
         } else { 
         days += 28; 
         } 
         break; 
         default: 
         System.out.println("您输入的月份有错,请重新输入!"); 
         }
         System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); 
          Calendar   aCalendar=Calendar.getInstance(); 
          aCalendar.set(year, month - 1, 1); 
         int firstDayofMonth = aCalendar.get(Calendar.DAY_OF_WEEK);
         for (int nullNo = 0; nullNo < firstDayofMonth - 1 ; nullNo++) { 
         System.out.print("\t"); 
         } 
         for (int i = 1; i <= days; i++) { 
         System.out.print(i); 
         if ((i + firstDayofMonth - 1) % 7 == 0) { 
         System.out.print("\n"); 
         } else { 
         System.out.print("\t"); 
         } 
         } 
        }