彦成- 2023-03-10 16:54 采纳率: 33.3%
浏览 90

增强for循环卡住 cannot find local variable list

增强for循环遍历一个从数据库查出来的集合,会卡住,就是一进去就会卡住,然后debug调试报错:cannot find local variable list
请求解惑呀,第一次遇见这种问题:
一下是代码

    @Scheduled(cron = "0/20 * * * * ?")
    public void test() throws ParseException {
      //报错在下面检查计量处
        System.out.println("定时任务开启");
        //检查证件是否临期
        List<SelCertTimeDto> selCertTimeDtos = facilityInfoDao.selCertTime();
        ArrayList<CardEarlyInfo> cardEarlyInfos = new ArrayList<>();
        for (SelCertTimeDto message : selCertTimeDtos) {
            System.out.println("检查证件");  
            CardEarlyInfo cardEarlyInfo = BeanCopyUtil.copyObject(message, CardEarlyInfo.class);
            //证件状态  键为证件类型 0注册证 1许可证 2合格证 1,值为状态 0设备临期,1设备超期
            //注册证
            if(message.getRegisterEndTime().before(new Date())){//超期了  注册证号   注册证有效期截止在当前日期之前
                cardEarlyInfo.setEarlyTime(new Date());
                cardEarlyInfo.setState(1);
                cardEarlyInfos.add(cardEarlyInfo);
                continue;
            }else {
                long time = message.getRegisterEndTime().getTime();//到期时间
                long time1 = new Date().getTime();
                long l = (time - time1) / (1000L * 60 * 60 * 24);
                if(l<30){
                    cardEarlyInfo.setEarlyTime(new Date());
                    cardEarlyInfo.setState(0);
                    cardEarlyInfos.add(cardEarlyInfo);
                    continue;
                }
            }
//
//            //许可证
            if(message.getProductionEndTime().before(new Date())){//超期了  注册证号
                cardEarlyInfo.setEarlyTime(new Date());
                cardEarlyInfo.setState(1);
                cardEarlyInfos.add(cardEarlyInfo);
                continue;
            }else {
                long time = message.getProductionEndTime().getTime();//到期时间
                long time1 = new Date().getTime();
                long l = (time - time1) / (1000L * 60 * 60 * 24);
                if(l<30){
                    cardEarlyInfo.setEarlyTime(new Date());
                    cardEarlyInfo.setState(0);
                    cardEarlyInfos.add(cardEarlyInfo);
                    continue;
                }
            }
//            //合格证
            if(message.getQualifiedEndTime().before(new Date())){//超期了  注册证号
                cardEarlyInfo.setEarlyTime(new Date());
                cardEarlyInfo.setState(1);
                cardEarlyInfos.add(cardEarlyInfo);
                continue;
            }else {
                long time = message.getQualifiedEndTime().getTime();//到期时间
                long time1 = new Date().getTime();
                long l = (time - time1) / (1000L * 60 * 60 * 24);
                if(l<30){
                    cardEarlyInfo.setEarlyTime(new Date());
                    cardEarlyInfo.setState(0);
                    cardEarlyInfos.add(cardEarlyInfo);
                    continue;
                }
            }
        }
  List<CheckEarlyDto> checkEarlyInfos = facilityDetailInfoDao.checkEarly();
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        List<CheckEarlyInfo> list = new ArrayList<>();
        for (CheckEarlyDto info : checkEarlyInfos) {
            System.out.println("检查计量"); //代码在这里卡住不报错,debug才可以看见报错信息

            String checkTime = info.getCheckTime();
            if(checkTime==null){
                checkTime=info.getAllocateTime();
            }
            Date parse = sd.parse(checkTime);
            //下一次检查日期
            Date nextCheckTime = DateUtil.getNextMonthDate(sd.parse(info.getCheckTime()), info.getFacilityCheckPeriod() == 0 ? 1 : (info.getFacilityCheckPeriod() == 1 ? 3 : 12));
            CheckEarlyInfo checkEarlyInfo = BeanCopyUtil.copyObject(info, CheckEarlyInfo.class);

            if(nextCheckTime.before(new Date())){//超期
                checkEarlyInfo.setState(1);
                checkEarlyInfo.setEarlyTime(new Date());
                list.add(checkEarlyInfo);
            }else{
                long time = new Date().getTime();
                long time1 = nextCheckTime.getTime();
                long l = (time1 - time) / (1000L * 60 * 60 * 24);//求出剩余天数
                if(l<30){
                    checkEarlyInfo.setState(0);
                    checkEarlyInfo.setEarlyTime(new Date());
                    list.add(checkEarlyInfo);
                }
            }
            System.out.println("list");

        }
        //保存计量预警
        if(list.size()!=0){
            System.out.println("保存计量预警");
            checkEarlyInfoService.saveBatch(list);
        }
  • 写回答

1条回答 默认 最新

  • pzzhao 2023-03-10 18:29
    关注

    cannot find local variable list 这个一般是debug模式才会出现的,并不是你真正的问题,你最好是try catch 一下整段代码看看有没有哪里抛出异常

    评论

报告相同问题?

问题事件

  • 修改了问题 3月10日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 c#转安卓 java html
  • ¥15 os.listdir文件路径找不到
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777
  • ¥50 医院HIS系统代码、逻辑学习
  • ¥30 docker离线安装mysql报错,如何解决?
  • ¥15 构建工单的总账影响在哪里查询或修改
  • ¥15 三个简单项目写完之后有重赏之后联系我
  • ¥15 python报内存不能read错误