0

私のコードにはこのメソッドがあります

public boolean has(AnyType x){

        for(int i=0; i<items.length; i++)
            if(items[i] == x)
                return true;

        return false;
    }

そして、compareTo()メソッドを使用するようにifステートメントを書き直したいと思います。覚えていることによると、次のようになります。

if(items[i].compareTo(x) == 0)

しかし、それは私にエラーを与えています

Exception in thread "main" java.lang.NullPointerException

私が間違っているかもしれないことのアイデアはありますか?

4

3 に答える 3

3

アイテム[]の1つがnullです。要素がnull以外の値に正しく設定されているかどうかを確認します。

于 2011-05-25T02:06:16.083 に答える
2

オブジェクトが必要な場合にアプリケーションがnullを使用しようとすると、NullPointer例外がスローされます。値を確認してくださいitems[i]。値の1つはnullでなければならないため、コンパイラーは。をスローしNullPointerExceptionます。

if(items[i].compareTo(x) == 0)

これを行うときは、null値をと比較しようとしています。xこれは実際に。をスローしNullPointerExceptionます。

not-a-null-valueテストを確認してください。これを試して、

public boolean has(AnyType x){

      for(int i=0; i<items.length; i++) {
            if(items[i] != null && items[i] ==x)
                   return true;
         return false;
    }
 }
于 2011-05-25T02:07:39.573 に答える
1

アイテムの1つがnullであるため、を呼び出す前に検証できますcompareTo

拡張されたforループを使用することもできます。

public boolean has(AnyType x){
    for( AnyType n : items ) {
        if( ( n == null && n == x )  || 
            ( n != null && n.compareTo( x ) == 0  ) ) { 
            return true;
        }
     }
     return false;
}
于 2011-05-25T02:18:02.817 に答える