2016-12-13 5 views
1

次のifステートメントで条件を再配置すると、なぜStringIndexOutOfBoundsExceptionがスローされるか、if 3 "と"(&&)演算子を使用したステートメントで再配置時にエラーが発生する

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

'a'の長さが' b'の長さと同じかそれ以上であることを確認するにはどうすればいいですか? –

+0

問題の説明に記載されています –

答えて

0
Exception:java.lang.StringIndexOutOfBoundsException: String index out of range: 0 (line number:6) 

は、あなたが空である配列のインデックス0にアクセスしようとしたことを意味します。

の式は、expression1がfalseの場合にfalseと評価されます。 expression2を評価しようとする試みはありません。

+0

これは当てはまりますが、 '&&'が評価されたときのオペランドの順序がどのように関係するかは実際には言いません。 – byxor

関連する問題