和对应的星期总是错一天,找半天,找不到原因.  是不是我压根就写错了,晕死! 来个大虾帮忙看下,谢谢public class TenThoudsandYears {
int year,month;
public void Years(int year, int month) {
int commonYear = 0,count = 0,bissextileYear = 0,sumDay,thisYear = 0;
int everyMonth[] ={0,31,28,31,30,31,30,31,31,30,31,30,31};
boolean bissextile = false, = false;

/**判斷是否閏年*/
if(year%400==0||year%4==0&&year%100!=0){
bissextile = true;
}

/**計算從零年到year共有多少個平年及多少個閏年*/
for(int i = 0;i<year;i++){
if(i%400==0||i%4==0&&i%100!=0){
bissextileYear ++;
}else{
commonYear ++;
}
}

/**計算到這一年共有多少天*/
sumDay = (commonYear + bissextileYear)*365 + bissextileYear;

//如果是閏年就加個一;
if(bissextile){

everyMonth[2] += 1;
}
for(int i = 1;i<month;i++){
thisYear += everyMonth[i];
}
sumDay += thisYear;
System.out.print(bissextileYear);

/**輸出年份*/
System.out.println("\t" + year + "年" + month + "月");

/**輸出星期*/
System.out.println("日\t一\t二\t三\t四\t五\t六");

/**輸出這月每一天*/
for(int i = 1;i<=everyMonth[month];i++){
if(!){
for(int j = 0;j<sumDay%7;j++){
System.out.print(" \t");
count ++;
}
 = true;
}
System.out.print(i + "\t");
count ++;
if(count%7 == 0){
System.out.println();
}
}

}}

解决方案 »

  1.   

    自己找到一个错误的地方,
    /**計算從零年到year共有多少個平年及多少個閏年*/
    for(int i = 0;i<year;i++){
     if(i%400==0||i%4==0&&i%100!=0){
     bissextileYear ++;
     }else{
     commonYear ++;
     }应该是从第一年开始计算,没有零年这个说法,呵呵.所以i应该等于1. 
    可是运行还是不对,总是错一天跟现实星期数!  
      

  2.   


    零年不用改,就改日期输出的地方
    for(int j = 0;j<sumDay%7;j++){
    改成
    for(int j = 1;j<sumDay%7;j++){ //从1开始循环,因为0的时候是不需要缩进的,否则就多缩进了一次了