有人可以向我解释为什么当我重新排列以下if语句中的条件时,它会抛出一个StringIndexOutOfBoundsException,或者它没有;
public int matchUp(String[] a, String[] b) {
int count = 0;
for (int i = 0; i < a.length; i++) {
if (a[i].length() > 0 && b[i].length() > 0 &&
a[i].charAt(0) == b[i].charAt(0)) {
count++;
}
}
return count;
}
基本上我的问题是,这个if语句是怎样的
if (a[i].charAt(0) == b[i].charAt(0) &&
a[i].length() > 0 && b[i].length() > 0)
与此if语句不同
if (a[i].length() > 0 && b[i].length() > 0 &&
a[i].charAt(0) == b[i].charAt(0)) {
count++;
}
第一个引发异常,例如:
matchUp(["", "", "ccc"], ["aa", "bb", "cc"]) → 1
例外:
java.lang.StringIndexOutOfBoundsException: String index out of range: 0 (line number:6)
答案 0 :(得分:0)
Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 0 (line number:6)
表示您尝试访问数组为空的索引0。
另一件事是,当expression1 && expression2
为假时,表达式expression1
被评估为false。没有尝试评估表达式。