for 与 foreach

  • Post author:
  • Post category:其他




for 与 foreach产生的Cannot find local variable异常


 for (int i = 0; i < termCourseHisDTOS.size(); i++) {
     int thisYear = LocalDate.now().getYear();
     if (termCourseHisDTOS.get(i).getCourseYear()== thisYear &&termCourseHisDTOS.get(i).getEndTime()== null)		{
         termCourseHisDTOS.remove(i);
  	 }
   }
  //遍历修改数组只能用for循环!
 for (TermCourseHisDTO termCourseHisDTO:termCourseHisDTOS) {
            int thisYear = LocalDate.now().getYear();
            if (termCourseHisDTO.getCourseYear()== thisYear && termCourseHisDTO.getEndTime()== null){
               termCourseHisDTOS.remove(termCourseHisDTO);
            }
        }
//会报错 java.util.ConcurrentModificationException: null
//foreach循环不能修改数组的长度,-也就是说不能在遍历的时候数组进行添加或删除!!!!!

Debug:在debug模式可以清晰的看到foreach在进行数字遍历的时候,会启动监听器,默认监视数组中第一个对象的某个特定的属性值,用来当作验证—(这里就取的是dayOfWeek,是系统的默认随机操作)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YELC9znW-1642147416445)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20220114155057664.png)]

直到改变数组后foreach,认为原来的那个数组对象以及不在了,就抛出了==>Cannot find local variable ‘termCourseHisDTOS’’异常。

ble ‘termCourseHisDTOS’’异常。



版权声明:本文为shouji6175原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。