2017-04-09 12 views
-3
public void setAns() { 

     if("TF".equals(queType)){ 
      ans.add("True"); 
      ans.add("False"); 
     } 
     else if("MC".equals(queType)){ 
      System.out.println("Enter choice 1 of 4"); 

      String ch1 = StdIn.readLine(); 
      ans.add(ch1); 
      System.out.println("Enter choice 2 of 4"); 
      String ch2 = StdIn.readLine(); 
      ans.add(ch2); 
      System.out.println("Enter choice 3 of 4"); 
      String ch3 = StdIn.readLine(); 
      ans.add(ch3); 
      System.out.println("Enter choice 4 of 4"); 
      String ch4 = StdIn.readLine(); 
      ans.add(ch4); 

     } 
     else if("L5".equals(queType)){ 
      ans.add("1"); 
      ans.add("2"); 
      ans.add("3"); 
      ans.add("4"); 
      ans.add("5"); 
     } 
    } 

ansはArraylistです。私は文字列であるユーザーの入力を追加しようとしています。私はそれを実行すると、最初のメッセージが表示されますが、 "ch1"の値を入力するとエラーが発生します。基本的にはそれを読んでいないので、NULLポインタの例外が表示されます。配列にユーザーの値を入力できません。NullPointerExceptionエラー

+0

あなたは 'null.member'または' nullの[インデックス] 'で終わるとき基本的には、NPEがスローされます。あなたの完全なコードは見当たりませんし、完全なスタックトレースがないので、何が起こっているのか分からないかもしれませんが、あなたの記述に基づいて、NPEが 'ans.add(ch1)'からスローされたように見えます。 ArrayListがnullを保持するのに問題はないので、 'ans.add(null)'はうまく動作するはずです。これは、 'null.ans(ch1)'であることを示唆しています。これは、ArrayListインスタンスで 'ans'を初期化しなかったことを意味します。 – Pshemo

答えて

0

addが呼び出される前にansが初期化されていない可能性があります。あなたは、例えば、setAns()が呼び出される前に、それを初期化してみてくださいまたはローカル変数として宣言してみてくださいでした:

List<String> ans = new ArrayList<>(); 
関連する問題