解决方案 »

  1.   

    很简单的{}匹配错误。放在myEclipse下面就一览无余了。import java.util.*;public class a4_26 { public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    System.out.println("请输入年份: ");
    int year = in.nextInt();
    System.out.println("请输入月份: ");
    int month = in.nextInt();
    int sum = 0;
    for (int i = 1900; i < year; i++) {
    if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
    sum += 366;
    } else {
    sum += 365;
    }
    }
    for (int i = 1; i <= month; i++) {
    if (i == 2) {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    sum += 29;
    } else {
    sum += 28;
    }
    } else {
    if (i == 4 || i == 6 || i == 9 || i == 11) {
    sum += 30;
    } else {
    sum += 31;
    }
    }
    }
    sum += 1;
    int wekday = sum % 7;
    System.out.println("日\t一\t二\t三\t四\t五\t六");
    for (int i = 1; i <= wekday; i++) {
    System.out.print("\t"); } if (month == 4 || month == 6 || month == 9 || month == 11) {
    for (int i = 1; i <= 30; i++) {
    if (sum % 7 == 6) {
    System.out.print(i + "\n");
    } else {
    System.out.print(i + "\t");
    }
    sum++;
    }
    } else if (month == 1 || month == 3 || month == 5 || month == 7
    || month == 8 || month == 10 || month == 12) {
    for (int i = 1; i <= 30; i++) {
    if (sum % 7 == 6) {
    System.out.print(i + "\n");
    } else {
    System.out.print(i + "\t");
    }
    sum++;
    }
    } else {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
    for (int i = 1; i <= 29; i++) {
    if (sum % 7 == 6) {
    System.out.print(i + "\n");
    } else {
    System.out.print(i + "\t");
    }
    sum++;
    }
    } else {
    for (int i = 1; i <= 28; i++) {
    if (sum % 7 == 6) {
    System.out.print(i + "\n");
    } else {
    System.out.print(i + "\t");
    }
    sum++;
    }
    }
    }
    }
    }经测试可以运行。
      

  2.   


            Scanner in = new Scanner(System.in);
            System.out.println("请输入年份: ");
            int year = in.nextInt();
            System.out.println("请输入月份: ");
            int month = in.nextInt();
            Calendar calendar = Calendar.getInstance();
            calendar.set(year, month - 1, 1);
            System.out.println("日\t一\t二\t三\t四\t五\t六");
            int size = calendar.get(Calendar.DAY_OF_WEEK) - 1;
            for (int i = 0; i < size; i++) {
                System.out.print("\t");
            }
            Calendar end = Calendar.getInstance();
            end.set(year, month, 1);
            end.add(Calendar.DATE, -1);
            while (calendar.before(end)) {
                if (calendar.get(Calendar.DAY_OF_WEEK) == 7) {
                    System.out.print(calendar.get(Calendar.DATE));
                    System.out.println();
                } else {
                    System.out.print(calendar.get(Calendar.DATE) + "\t");
                }
                calendar.add(Calendar.DATE, 1);
            }
            System.out.println();
      

  3.   

    for (int i = 1; i <= month; i++) 
    这行把那个=号去了就行了。
      

  4.   

    else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
            {
                for(int i=1;i<=31;i++){
                    if(sum%7==6){
                        System.out.print(i+"\n");
                    }else{
                        System.out.print(i+"\t");
                    }
                    sum++;
                }
    应该是<=31吧
      

  5.   

    你才是高手啊! 谢了!能解释一下代码吗?如果可以的话,分就给你啦!
    sum表示的是某年某月1号到1900年1月1号之间所有的天数总和。
    因为这里的month是当前月份,即你需要显示的月份,所以你不需要把这个月的天数也加到sum中去。否则显示的就是下一个月份的了。