注册 登录
编程论坛 JAVA论坛

关于日历的问题,帮忙解答一下

X15810803158 发布于 2016-03-03 21:21, 2179 次点击
import java.util.Scanner;
public class Q{
    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(year%4==0&&year%100!=0||year%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+=3;
        
         int wekday = sum%7;
         System.out.println("一\t二\t三\t四\t五\t六\t日");
         
         for(int i=1;i<=wekday;i++){
            
            System.out.print("\t");
            
            }
        
        for(int i=1;i<=30;i++){
            if(sum%7==6){
                System.out.print(i+"\n");
                }
            else{
                System.out.print(i+"\t");
                }
            sum++;
            }
        
         
        
        }
   
   
   
    }
2 回复
#2
X158108031582016-03-03 21:27
后面的  sum+=3;   这不是求1900年到哪一天的吗 (最开始是求19001.1到2016.3.3的天数),后来改成日历,运行时正确的,搞不明白??
#3
grmmylbs2016-03-04 17:58
因为你这里写错了!
        for (int i=1900; i<year; i++){
               if(year%4==0&&year%100!=0||year%400==0){

应该是
         for (int i=1900; i<year; i++){
               if(i%4==0&&i%100!=0||i%400==0){
才对。

另外最后打印日期的时候,固定打30天,也是不对的
另外你对1900年的判断还是会有问题。

[此贴子已经被作者于2016-3-4 18:03编辑过]

1