2016-12-13 1 views
1

누군가가 다음 if 문에서 조건을 재정렬 할 때 설명 할 수 있습니까? 그렇지 않으면 StringIndexOutOfBoundsException이 throw됩니다.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 (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이 거짓 일 때 거짓으로 평가됩니다. expression2를 평가하려는 시도는 없습니다.

+0

사실입니다 만, '&&'가 평가 될 때 피연산자의 순서가 어떻게 중요한지는 실제로 언급하지 않습니다. – byxor

관련 문제