1

文字列が検索文字列と等しいかどうかを確認するために、for ループ内に次のコードがあります。

if(Data.coord[i].equals(Data.search))

正確な値、つまり 1=1 でコードの残りの部分が正常に動作する場合にコードをテストしました。文字列の比較が気に入らないだけです。コンソールは次のエラーを出します:

Exception in thread "main" java.lang.NullPointerException
at highercoursework.Search.main(Search.java:16)
at highercoursework.Main.main(Main.java:16)

ありがとう

4

6 に答える 6

2

配列に未入力の要素があります。

Data.coord[i]

ですnull。Data.searchがnullになる可能性がありますが、equals()メソッドはこれを処理することに注意してください。最初に要素チェックを実行する必要があります。

于 2012-11-15T10:25:46.030 に答える
2

定数はパラメータである可能性があるため、パラメータと比較する必要がありますnull

たとえば、Data.searchが検索している定数である場合は、次のようにする必要があります。

if(Data.search.equals(Data.coord[i]))

この場合、null参照でメソッドを呼び出そうとすることはなく、不要なnullチェックも必要ありません。

于 2012-11-15T10:26:12.537 に答える
1
String[] coord = new String[100];

これは、coord[0] に何かを割り当てることができることを意味しますが、それを行うまで coord[0] は null です。したがって、ヌルポインタ例外です。

あなたが試すことができます。

String data= Data.coord[i];
if(data != null && data.equals(Data.search))
于 2012-11-15T10:27:36.790 に答える
1

次の 2 つの方法で問題を回避できます。

  • coord[i] が null であってはならない場合

    if (Data.coord[i] != null) {
        if(Data.coord[i].equals(Data.search)) {
    
        }
    } else {
        logger.error("Unexpected Behavior: coord[i] should not be null");
    }
    

注: ロガー メッセージは、要件に合ったより適切なコードに置き換えることができます。


  • あなたのcoord [i]がnullになる可能性がある場合

Data.coord[i] が null の場合、この方法で比較しても例外はスローされません。(Data.search が定数であり、null を使用できないと仮定します) したがって、この場合の規則は次のとおりです。String オブジェクト定数を優先的に使用して、メソッド equals を呼び出します。

if (Data.search.equals(Data.coord[i])) {}
于 2012-11-15T11:12:55.700 に答える
0

これを試して:

if(DATA != null && Data.coord[i].equals(Data.search))
于 2012-11-15T10:28:14.490 に答える
0

Null ポインター例外とは何かを理解するためにこれをお読みください。

coord[] が適切に初期化されている場合、値はData.coord[i]null になる可能性があります。確認してもいい

if(Data.coord[i] != null && Data.coord[i].equals(Data.search)) {}
于 2012-11-15T10:33:42.240 に答える