Nextday函数的简单实现

    技术2022-05-20  28

    话说振宇哥的测试课,还要写三个函数: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;    } }

     

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


    最新回复(0)