我的代码被声纳检测到,违反“for”循环停止条件应该是不变的。我试图修复它,但声纳认为问题仍然存在,因为我的for循环在另一个for循环中。
下面是代码片段:
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循环,因为行为将与所需的不同。
如果有人能就如何纠正这一违规行为提出建议,我们将不胜感激。先谢谢你。
1条答案
按热度按时间fjnneemd1#
将参数列表拆分为
limit
但它可能完全摆脱嵌套循环。另外,如果
tempParam
仅用于跟踪批处理中的元素数,可以通过重用来替换count
.或者可以完全重构这些代码,以使用JavaStreamAPI并实现一个helper方法来处理块(例如。
printChunk
):