【发布时间】:2020-12-02 23:33:40
【问题描述】:
我的代码被声纳检测到违反“for”循环停止条件应该是不变的。 我试图修复它,但声纳认为问题仍然存在,因为我的 for 循环在另一个 for 循环中。
这里是sn-p的代码:
int limit = Const.getBatchLimit();
int count = 0;
for (int paramIndex = 0; paramIndex < paramList.size();)
{
List<Param> tempParam = new ArrayList<>();
StringBuilder retrieveMsg = new StringBuilder("Retrieving: \n");
for (count = 0; (count < limit) && (paramIndex < param.size()); count++, paramIndex++)
{
Param myParam = paramList.get(paramIndex);
retrieveMsg.append(myParam .seq()).append(Str.SLASH).append(Str.CRLF);
tempParam.add(myParam);
}
LOGGER.info(retrieveMsg.toString());
LOGGER.info("Done. Retrieved count: " + tempParam.size());
}
我无法将 paramIndex++ 移至第一个 for 循环,因为其行为与预期不同。
如果有人可以就如何解决此违规问题提供建议,我们将不胜感激。 提前谢谢你。
【问题讨论】: