以下代码没有错误。但是,只要if (i == a.length - 1 || a[i] != a[i + 1])
条件保持其秩序就可以了。将 if 条件交换为if(a[i] != a[i + 1] || i == a.length - 1)
将引发异常。是通过短路来防止异常,是一种可预期的编码标准,还是有一些理论/设计模式警告反对这种编码实践?如果是这样,请提供链接/材料。
public static void eliminateDuplicate(int[] a) {
if (a == null) {
throw new NullPointerException();
}
List<Integer> list = new ArrayList<Integer>();
for (int i = 0; i < a.length; i++) {
if (i == a.length - 1 || a[i] != a[i + 1]) {
System.out.println("now what : " + a[i]);
list.add(i);
}
}
}