0

Stringsと呼ばれる配列がありlettersます。次のコード行を実行しようとすると、が表示されますNullPointerException

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

jの長さよりも短い任意のインデックスはどこにありますかletters

tmpst次のように定義された文字列です。

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

ここtheWordで、は長さが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);
            }

        }

誰かが私が間違っていることを見ることができますか?

ありがとう。

4

4 に答える 4

1

配列に null 参照が含まれているようです。Arrays.toString(letters)それが本当かどうかを確認するために使用できます。

配列に null 値が含まれていても比較が機能するようにするには、コードを次のように変更する必要があります。

if(tmpst.equals(letters[j]))
于 2012-10-11T03:58:37.683 に答える
0

letters.length問題なく評価された式letters[j]が null の場合、これが唯一の可能性です。null 参照でメソッドを呼び出すことはできません。

次のように null の場合を考慮して何かを記述する必要があります。

if (letters[j] != null && letters[j].equals(tmpst)) {
于 2012-10-11T04:02:29.553 に答える
0

違いを理解する必要があります。
たとえば、String myString.NowmyString == nullと myString.equals("") は 2 つの異なるものです。
を使用する前myString.equals("")に、文字列が初期化され、null でないことを確認する必要があります。したがって、どのインデックスでも文字列オブジェクトが初期化されていないため、このエラーが発生しています。
あいまいさがある場合はお気軽にお問い合わせくださいmyString == null
:)

于 2012-10-11T04:05:53.403 に答える