和对应的星期总是错一天,找半天,找不到原因. 是不是我压根就写错了,晕死! 来个大虾帮忙看下,谢谢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();
}
}
}}
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();
}
}
}}
/**計算從零年到year共有多少個平年及多少個閏年*/
for(int i = 0;i<year;i++){
if(i%400==0||i%4==0&&i%100!=0){
bissextileYear ++;
}else{
commonYear ++;
}应该是从第一年开始计算,没有零年这个说法,呵呵.所以i应该等于1.
可是运行还是不对,总是错一天跟现实星期数!
零年不用改,就改日期输出的地方
for(int j = 0;j<sumDay%7;j++){
改成
for(int j = 1;j<sumDay%7;j++){ //从1开始循环,因为0的时候是不需要缩进的,否则就多缩进了一次了