我想告诉下一行是否与当前行不同,或者这是最后一行
如果我使用此代码,我确定不会获得ArrayIndexOutOfBoundsException
吗?
这是检查这个的好方法吗?
for (current_line = 0; current_line < lines_array.length; current_line++) {
/* ... */
boolean nextLineIsDifferentOrThereIsNoNextLine =
(current_line + 1 >= max_lines) ? true :
!lines_array[current_line].equalsIgnoreCase(lines_array[current_line + 1]);
/* ... */
}
编辑:
我用一个小阵列尝试了它,但我没有得到任何例外。怎么会这样? :S
答案 0 :(得分:2)
如果max_lines
等于lines_array.length
,那么它将完全正常。只需添加一行注释即可澄清事物(尽管变量的名称非常清楚)
current_line + 1 >= maxLines
确保您没有获得ArrayIndexOutOfBounds
。
也许值得注意的是,数组中一定不能有null
个条目,否则会冒NullPointerException
的风险。因此,为了不使代码混乱,您可以创建一个私有方法:
private boolean itemsDiffer(String current, String next) {
if (current == null && next == null {
return false; // or true, if that's your semantics
} else {
return current == null || current.equalsIgnoreCase(next);
}
}
然后:
boolean nextLineIsDifferentOrThereIsNoNextLine =
(current_line + 1 >= max_lines) ? true :
itemsDifferent(linesArray[current_line], linesArray[current_line + 1];
答案 1 :(得分:1)
为什么不按照自然顺序迭代它,我的意思是你不必将它与下一个数组进行比较,只需将它与前一个数组进行比较。
答案 2 :(得分:0)
对我来说没问题,假设您的数组不包含空值。