| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2800 人关注过本帖
标题:初学者,请帮看程序并优化,虽然实现了计算两个日期之间的天数,但是感觉总 ...
取消只看楼主 加入收藏
ujquan
Rank: 2
等 级:论坛游民
帖 子:62
专家分:42
注 册:2011-12-26
结帖率:33.33%
收藏
已结贴  问题点数:20 回复次数:3 
初学者,请帮看程序并优化,虽然实现了计算两个日期之间的天数,但是感觉总有问题。
import java.util.Scanner;
class JiSuanTianShu//计算年份1到年份2之间的天数
{
    public static void main (String [] args){
    Scanner s = new Scanner(System.in);
    System.out.print("请输入起始年:");
    int y1 = s.nextInt();
    System.out.print("请输入始年月:");
    int m1 = s.nextInt();
    System.out.print("请输入始年日:");
    int d1 = s.nextInt();
    System.out.print("请输入截止年:");
    int y2 = s.nextInt();
    System.out.print("请输入截止月:");
    int m2 = s.nextInt();
    System.out.print("请输入截止日:");
    int d2 = s.nextInt();
    int sum = 0 ;
    int sum1 = 0;
    int sum2 = 0;
    int sum3 = 0;
    if(y1<y2)//判断起止年
   {  
//计算起止年之间整年的天数   
      for(int i= y1+1 ; i<y2 ;i++){
          if(i%4==0&&i%100==00||i%400==0)
           { sum3 = sum3 + 366;
          System.out.println(i+"年"+sum3+"天");}
          else
            {sum3 = sum3 + 365;
            System.out.println(i+"年"+sum3+"天");}
       }
//计算起始年剩余的天数。
       switch(m1){
        case 1:
           sum1 = sum1+31;
        case 2:
          if(y1%4==0&&y1%100!=0||y1%400==0)
           sum1 = sum1+29;
          else
           sum1 = sum1+28;
        case 3:
           sum1 = sum1+31;
        case  4:
           sum1 = sum1+30;
        case  5:
           sum1 = sum1+31;
        case 6 :
           sum1 = sum1+30;      
        case 7:
           sum1 = sum1+31;
        case  8:
           sum1 = sum1+31;   
        case 9:
           sum1 = sum1+30;     
        case 10:
           sum1 = sum1+31;
        case 11:
           sum1 = sum1+30;
        case 12 :
           sum1 = sum1+31;
      
       }
         sum1 = sum1-d1;  
         System.out.println(y1+"年"+m1+"月"+d1+"日"+"之后"+y1+"年还剩余"+sum1+"天");
//计算截止年月日之前的天数。
       switch(m2-1){
         case 11:
           sum2 = sum2+30;
         case 10:
           sum2 = sum2+31;
         case 9:
           sum2 = sum2+30;
         case  8:
           sum2 = sum2+31;
         case 7:
           sum2 = sum2+31;
         case 6 :
           sum2 = sum2+30;
         case  5:
           sum2 = sum2+31;
         case  4:
           sum2 = sum2+30;
         case 3:
           sum2 = sum2+31;
         case 2:
           { if(y1%4==0&&y1%100!=0||y1%400==0)
               sum2 = sum2+29;
             else
               sum2 = sum2+28;
            }
         case 1 :
           sum2 = sum2+31;
        }
           sum2 = sum2+d2;
            System.out.println(y2+"年"+m2+"月"+d2+"日是"+y2+"年的第"+sum2+"天。");
     sum = sum1 +sum2+sum3;
     System.out.println(y1+"年"+m1+"月"+d1+"日"+"到"+y2+"年"+m2+"月"+d2+"日有"+sum+"天。");
    }else if(y1==y2)//同年则要判断是否月份大小以及日期大小
       {
          if(m1<=m2&&d1<=d2)
            {
              sum = sum1+d2-d1;     
              System.out.println(y1+"年"+m1+"月"+d1+"日"+"到"+y2+"年"+m2+"月"+d2+"日有"+sum+"天。");
           }else  if(d1>d2){
              System.out.println("起止日期输入错误!");

           }else
              System.out.println("起止月份输入错误!");

       }else
          System.out.println("起止年份输入错误!");
}
}
搜索更多相关主题的帖子: public import 
2016-02-28 09:17
ujquan
Rank: 2
等 级:论坛游民
帖 子:62
专家分:42
注 册:2011-12-26
收藏
得分:0 
总感觉计算机的执行顺序有问题,尤其是年份相等分支时。
2016-02-28 09:27
ujquan
Rank: 2
等 级:论坛游民
帖 子:62
专家分:42
注 册:2011-12-26
收藏
得分:0 
回复 3楼 诸葛欧阳
请教如何优化????
请指点一下!谢谢!!
2016-03-01 14:26
ujquan
Rank: 2
等 级:论坛游民
帖 子:62
专家分:42
注 册:2011-12-26
收藏
得分:0 
不用time函数之类,纯循环和分支结构编写。
2016-03-01 14:58
快速回复:初学者,请帮看程序并优化,虽然实现了计算两个日期之间的天数,但是感 ...
数据加载中...
 
   



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

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