2011-10-30 9 views
-3

キューを含むコードを実装しましたが、実行中にNullPointerExceptionが発生しました。問題を修正するのを助けてください。私はそのコードの短い形式しか書いていません。あなたが最初のキューを初期化する必要がQueue内のNullPointerException

import java.util.*; 
class ex 
{ 
public static void main(String args[])throws IOException 
{ 

    Scanner in=new Scanner(System.in); 
    int i; 
    String s; 
    int n=in.nextInt(); 

    Queue<Integer> q=null; 
    for(i=0;i<n;i++) 
    { 
     q.add(i);//I get the error in this line 
    } 
    System.out.println(q.size()); 
} 
} 

答えて

2

Queue<Integer> q=null; 

は次のようになります。

Queue<Integer> q = new Queue<Integer>(); 

エラーの理由は、あなたがQに値を追加しようとしているということです。 qはタイプQueue<Integer>であり、そのタイプ自体のオブジェクトへの参照ではないように設定されています。

1
Queue<Integer> q = null; 

うーん...それはnullだと:

q.add(i); 
あり

あなたはそれを使用しようとしています。エルゴ、例外。

あなたが使用できるものを持っているために、インスタンス化オブジェクトを持っている:

Queue<Integer> q = new Queue<Integer>(); 

これは単純なタイプミス/監督なかった場合、あなたはの先頭から開始することをお勧めしますより複雑なものに取り組む前に、Oracleが提供するJavaチュートリアルや "Learning java"タイプの書籍を入手してください。

0

qnullであるため、NPEを取得します。あなたはそれを使用することができます前に、たとえば、オブジェクトを作成する必要があり

Queue<Integer> q = new LinkedList<Integer>(); 

をここでは、私はQueueインタフェースを実装するクラスとしてLinkedList選びました。他にも多くのものがあります:Queue javadocの「すべての既知の実装クラス」を参照してください。

0
Queue<Integer> q=null; 
... 
q.add(i);//I get the error in this line 

あなたQueue参照がnullあるので、それにアクセスしようとしたとき、あなたはNullPointerExceptionを取得します。それを使用する前に、qは、例えばのような有効なものを指すようにありますqnullあるので、たまたま

Queue<Integer> q = new Queue<Integer>();