Integer days = 0; Boolean b= false; if (auditNodeConfigVOS != null && auditNodeConfigVOS.size() > 0) { auditNodeConfigVOS.forEach(auditNodeConfigVO -> { AuditMap.put(auditNodeConfigVO.getApprovalStatus(), auditNodeConfigVO.getLimitTime()); if ("印发审计通知".equals(auditNodeConfigVO.getNodeName())){ b=true; } if (b){ days+= auditNodeConfigVO.getLimitTime(); } }); }分析一些为什么b和days语法报错
时间: 2024-02-10 12:06:49 浏览: 63
Java if(boolean)和if(boolean=true)区别解析
根据代码的语法,`b`和`days`变量应该在代码的开头被声明,否则会报错。此外,需要注意以下几点:
1. 变量的类型需要根据实际情况进行声明,例如`days`应该声明为`int`类型,而不是`Integer`类型;`b`则可以声明为`boolean`类型。
2. 变量在使用之前需要进行初始化,否则会报错。例如,`days`变量应该初始化为0。
3. 在Lambda表达式中访问外部变量时,变量需要被声明为`final`或者是`effectively final`,否则会报错。在这段代码中,如果`b`变量被声明为`final`或者`effectively final`,则不会报错。
改写后的代码如下所示:
```
int days = 0;
boolean b = false;
Map<String, Integer> AuditMap = new HashMap<>();
if (auditNodeConfigVOS != null && auditNodeConfigVOS.size() > 0) {
for (AuditNodeConfigVO auditNodeConfigVO : auditNodeConfigVOS) {
AuditMap.put(auditNodeConfigVO.getApprovalStatus(), auditNodeConfigVO.getLimitTime());
if ("印发审计通知".equals(auditNodeConfigVO.getNodeName())) {
b = true;
}
if (b) {
days += auditNodeConfigVO.getLimitTime();
}
}
}
```
阅读全文