日期:2014-05-20  浏览次数:20778 次

这是小弟改写的日历代码,可是不能编译.求高手指点!谢谢
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++;
}
}
}
}
}
}

------解决方案--------------------
引用:
Quote: 引用:

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

你才是高手啊! 谢了!能解释一下代码吗?如果可以的话,分就给你啦!

sum表示的是某年某月1号到1900年1月1号之间所有的天数总和。
因为这里的month是当前月份,即你需要显示的月份,所以你不需要把这个月的天数也加到sum中去。否则显示的就是下一个月份的了。