标题:关于日历的问题,帮忙解答一下
只看楼主
X15810803158
Rank: 2
等 级:论坛游民
帖 子:49
专家分:36
注 册:2015-2-24
结帖率:91.67%
已结贴  问题点数:5 回复次数:2 
关于日历的问题,帮忙解答一下
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++;
            }
        
         
        
        }
   
   
   
    }
搜索更多相关主题的帖子: public import 日历 
2016-03-03 21:21
X15810803158
Rank: 2
等 级:论坛游民
帖 子:49
专家分:36
注 册:2015-2-24
得分:0 
后面的  sum+=3;   这不是求1900年到哪一天的吗 (最开始是求19001.1到2016.3.3的天数),后来改成日历,运行时正确的,搞不明白??
2016-03-03 21:27
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:5 
因为你这里写错了!
        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编辑过]

2016-03-04 17:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462122-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.282737 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved