0

私はリストに不慣れで、以下の方法に問題があります:問題は次のとおりです:java.lang.NullPointerException

コード:

public static List<Integer> input(List<Integer> l)
{
        Node<Integer> pos=l.getFirst();
        System.out.println("Enter num (!=999)");
        int x = reader.nextInt();
        l.insert(null, x);
        while(x!=999)
        {
                System.out.println("Enter num (!=999)");
                l.insert(pos, x);
                pos = pos.getNext();
        }

        return l;
}

愚かな私はしばらくの間入力メッセージを忘れました...

4

2 に答える 2

0

2つの可能性:

  1. あなたの" pos"参照はnull(あなたはそれをチェックすることができます)
  2. " pos"オブジェクトにはNULLオブジェクトが含まれており、コンパイラはこのオブジェクトをどこかでプリミティブ型にオートボックス化しようとします(オブジェクト型Nodeとして宣言されていIntegerます) 。

SO:null""にアクセスする前に確認し、そのように宣言するときposは""オブジェクトを使用します。Integer

于 2013-01-28T15:28:35.190 に答える
0

l空のリストとして初期化した場合は、

Node<Integer> pos=l.getFirst();

を返しnullます。その後pos.getNext();nullインスタンスを呼び出します。したがって、NullPointerExceptionwhileこれを修正する1つの方法は、次のように、ループ内の空のリストの可能性を処理することです。

while (x != 999)
{
    System.out.println("Enter num (!=999)");
    l.insert(pos, x);
    if (pos == null)
        pos = l.getFirst();
    else
        pos = pos.getNext();
}

これを実行すると、コードに2番目の問題が表示され、解決できるはずです。

幸運を!

于 2013-01-28T15:33:38.750 に答える