循环体中不应该修改循环计数器。 不过,其他控制循环逻辑的变量可以在循环中修改,比如,表示一些事情完成的标记位,会在for语句中进行判断。
如下代码所示:
String[] names = new String[]{ "Jack", "Jim", null, "John" };
for (int i = 0; i < names.length; i++) {
if (names[i] == null) {
i = names.length; // Non-Compliant
} else {
System.out.println(names[i]);
}
}
应该重构为:
String[] names = new String[]{ "Jack", "Jim", null, "John" };
for (String name: names) {
if (name == null) {
break; // Compliant
}
System.out.println(name);
}