20200802 千锤百炼软工人第二十八天

今天改了一个错误

这个错误是一个关于数组越界的问题

我的朋友一开始写的是这个

   public static int dayinmonth(int month,int year) {
      int months[]= {31,29,31,30,31,30,31,31,30,31,30,31};
      if(isLeapYear(year))
       months[1]=29;
      else
       months[1]=28;
      return months[month-1];
     }

但是在编译后他是认为没有错误的

但是在实际上运行时

是有很大风险的

在这个程序中

return是一个关键

return 之后是months数组

这个数组的长度是12

但是如果这个局部变量month是一个负数

或者是其他的数

反正没有在这个长度为12的数组范围之内

这就有了风险

所以之后直接就改成了另一种代码

来替代这个功能

进而避免了着个数组越界的问题

原文地址:https://www.cnblogs.com/huangmouren233/p/13420013.html