2012-10-11 4 views
0

배열이 lettersStrings입니다. 다음 코드 줄을 실행하려고하면 NullPointerException이 표시됩니다. theWord보다 큰 길이를 갖는 임의의 스트링문자열의 비교는 NullPointerException을 던졌습니다.

char myChar = theWord.charAt(i); 
String tmpst = String.valueOf(myChar); 

: jletters

tmpst의 길이보다 임의의 인덱스 이하

if(letters[j].equals(tmpst)) 

같은 정의 된 문자열 4.

전체 코드는

입니다.
for (int i = 0; i < theWord.length(); i++) { 
     for (int j = 0; j < letters.length; j++) { 

      char myChar = theWord.charAt(i); 
      String tmpst = String.valueOf(myChar); 

      if(letters[j].equals(tmpst)) { 
       System.out.println("YOU DIDIT!!! :D"); 
       newWord = newWord + theWord.charAt(i); 
      } 

     } 

내가 잘못하고있는 것을 누군가가 볼 수 있습니까?

감사합니다.

+0

i와 j가 취하는 값의 전체 코드를 제공하십시오. – Siddharth

+0

인덱스'j'에 문제가 있습니다. 전체 코드 – venkatKA

+2

배열'letters'가 * 초기화되지 않았을 수 있습니다 *. – adatapost

답변

1

배열에 일부 null 참조가있는 것으로 보입니다. Arrays.toString(letters)을 사용하면 사실인지 확인할 수 있습니다. 당신이 당신의 comparisson 여전히 배열이 null 값이 포함 된 경우에도 작동합니다

, 당신은 이렇게 될 코드를 변경해야합니다 표현 letters.length 문제없이 평가

if(tmpst.equals(letters[j])) 
+0

'letters' 배열은 null 값을 가지고 있다고 가정하고 있지만 null은 문자열과 같기 때문에 문제가 될 것이라고 생각하지 않았습니다. – Jeeter

+0

@Jeeter Null은 빈 문자열과 동일하지 않습니다. tou가이 방법으로 작동하게하려면 매개 변수를 반전시켜야합니다. if (tmpst.equals (letters [j])). 나는 그것을 답에 추가 할 것이다. –

+1

자바에서 null은 null이 아닌 다른 것과 결코 "동일"하지 않습니다. 특히 ""(와)과 null은 동일하지 않습니다. ""는 객체이며, null은 객체가 없다는 것을 나타냅니다. – JimN

0

경우, letters[j]가 null의 경우, 이것이 유일한 가능성이다. null 참조에서 메서드를 호출 할 수 없습니다.

귀하는이 같은 null의 경우 케이스를 고려 뭔가를 작성해야 :

if (letters[j] != null && letters[j].equals(tmpst)) { 
0

당신은 차이를 이해할 필요가있다.
예를 들어, String myString이 있습니다. 이제 myString == null과 myString.equals ("")는 서로 다른 두 가지입니다.
myString.equals("")을 사용하기 전에 문자열이 초기화되고 null이 아닌지 확인해야합니다. 그래서,이 오류는 모든 인덱스에서 문자열 객체의 초기화되지 않기 때문에 발생합니다.
어떤 embiguity을 :)이있는 경우 myString == null
물어 자유롭게 사용하여 그것을 확인하려고

0

체크 !=null 첫째, null 때문에 은 다음 .equals() 방법을 ..... 사용하지 않는 string.so에 대한 수 없습니다 사용자 .equals() 방법

관련 문제