话说振宇哥的测试课,还要写三个函数: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; } }
声明:上边的代码目前是没有经过测试的,等我们自动化测试工具开发好了以后,回进行测试的!!