2017-09-14 6 views
1
System.out.println("insert after specified data node"); 
System.out.println("enter data"); 
int x = sc.nextInt(); 
Node s4 = head; 
try 
{ 
    while(s4.data != x) 
    { 
     s4 = s4.next; 
    } 
} 
catch(NullPointerException e) 
{ 
    e.printStackTrace(); 
} 

System.out.println("hi"); 

Node specifiedNode = new Node(x); 
//s4.next = specifiedNode; 

try 
{ 
    specifiedNode.next = s4.next; 
    s4.next = specifiedNode; 

} 
catch(NullPointerException e) 
{ 
    e.printStackTrace(); 
} 

System.out.println("output after specified insertion"); 
Node s5 = head; 
while(s5!=null) 
{ 
    System.out.println(s5.data); 
    s5 = s5.next; 
} 

}単一リンクリストのJava

これは、単一のリンク・リスト内の指定されたノードの後に​​データを挿入するためのサンプルプログラムです。上記のプログラムで私の質問は、次のステートメントでnullポインタの例外が発生している理由です:

specifiedNode.next = s4.next; 
s4.next = specifiedNode; 
+0

[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。 –

+0

達成しようとしていることを書いて描く必要があります。この実装は途方もないです。 – Sedrick

+0

'while(s4.data!= x)s4 = s4.next;'基本的に、リストに 'x'がないと失敗します... NPEをキャッチして管理するべきではありません。 _ "なぜ?" _のために、あなたは値をチェックするだけですか? – AxelH

答えて

0

なぜs4インスタンスの.nextにアクセスし続けますか? これを行う方法は、s4.nextを一度に属性に格納し、次のレコードを呼び出す.next()にアクセスするたびに、あなたのプログラム内でそれを使い続けることです。 ;

0

NullPointerExceptionを回避するには、必ずs4がnullでないことを確認してください。

Node s4 = head;  // Head initially is null (empty list). 
while (s4 != null) { // End reached? 
    if (s4.data == x) { 
     // Wow, found x. 
     break; // Jump out of the loop. 
    } 

    // Go to next node. 
    s4 = s4.next; // s4 could become null. 
} 
関連する問題