Nextday函数的简单实现

话说振宇哥的测试课,还要写三个函数:triangle,nextday,replace。

为了避免复杂的逻辑判断,使用了表驱动的实现方法。

其实我下边的代码的逻辑判断一点不复杂,欢迎观赏!

真正复杂的好象是判断星期几的函数:也就是给你年月日,然后判断当天是星期几

 

public class Main {
  
    private int [] leapMonths =
    {
        31,29,31,30,31,30,31,31,30,31,30,31
    };
   
    private int [ ] nonLeapMonths =
    {
        31,28,31,30, 31,30,31,31,30,31,30,31
    };
   
    private int monthday [][] =
    {
            leapMonths, nonLeapMonths
    };

    /**
     * 当输入的年月日是有效值的时候,返回true,否则返回false
     * @param year
     * @param month
     * @param day
     * @param re 这是一个存放结果值的数组,当返回值是true的时候,这个值有意义,否则是无效的
     * @return
     */
   public  boolean   work(int year , int month , int day , int [] re )
   {
     if(!isValidInput(year,month,day))
         return false;
     
     boolean isLeap = isLeap(year);
    
     int index = isLeap ? 0:1;
    
     if(day > monthday[index][month])
     {
         return false;                        //表示这个月的这一天是不合法的,比如润年的2月30号
     }
     else
         if(day == monthday[index][month])    //nextday跳到了下一个月了
     {
         day = 1 ;
         month++ ;
         if(month > 12 )
         {
             month = 1;
             year++;
         }
     }
     else
     {
         day ++;
     }
    
     re[0] = year;
     re[1] = month;
     re[2] = day;
    
     return true;
   }
  
  
   private boolean isLeap(int year)
   {
       if((year % 4 ==0) && (year % 100 !=0) )
           return true;
       if(year % 400 == 0)
           return true;
      
       return false;
   }
   /**
    * 程序的作用是初步的检查年月日的合法性,没有检查年月日之间的关系
    * @param year
    * @param month
    * @param day
    * @return
    */
   private  boolean isValidInput( int year , int month , int day )
   {
       if(year<1970 || year > 2050)
           return false;
       if(month > 12 || month <= 0)
           return false;
       if(day >31 || day <= 0)
           return false;
      
       return true;
   }
}

 

声明:上边的代码目前是没有经过测试的,等我们自动化测试工具开发好了以后,回进行测试的!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值