2016-11-19 14 views
0

BlueJでJavaの学習を始めようとしていますが、かなり苦労しています。現時点ではArrayListsを見ています。次のコードは正しくコンパイル:ArrayListのヌルポインタ例外

import java.util.ArrayList; 

public class TestArrayList 
{ 
    public static int colorCode; 
    public ArrayList<String> selection; 

    public TestArrayList() 
    { 
    } 

    private void selection() 
    { 
     selection = new ArrayList<String>(); 
     { 
      selection.add("red"); 
      selection.add("yellow"); 
      selection.add("blue"); 
     } 
    } 

    public void selectColor(int colorCode) 
    { 
     if (colorCode == 1) 
     System.out.println("You have selected " + selection.get(0) + ", the color of fire!"); 
     if (colorCode == 2) 
     System.out.println("You have selected " + selection.get(1) + ", the color of electricity!"); 
     if (colorCode == 3) 
     System.out.println("You have selected " + selection.get(2) + ", the color of water!"); 
     else 
     System.out.println("Invalid selection"); 
    } 
} 

しかし、私はメソッド「選択」を実行しよう、と私はポップアップウィンドウに1、2、または、3を入力し、私はエラーを取得します。 0、4、5、6などの他の値はすべて問題ありません。しかし、1、2、および3のため、ターミナルウィンドウは、次のエラーが表示さ:

java.lang.NullPointerException 
    at TestArrayList.selectColor(TestArrayList.java:25) 

を、エディタは、コード「selection.get(0)」を含む行を強調表示し、エラー「れるjava.langを返します.Null.Pointer例外:null "

私が話している方法から、私はJavaについてほとんど知りませんと言えるでしょう。私が間違っていることは明らかですか?助けることができる誰にも感謝します。

+1

* "しかし、私はメソッド" selection ""を実行しようとすると "*これは当てはまりません、あなたは' selectColor'を呼び出しています。 – Tom

答えて

3

あなたのメソッドselectionは呼び出されません。したがって、ArrayListはnullです。 null参照でメソッドを呼び出すと、NullPointerExceptionが発生します。

コンストラクタでメソッドを呼び出します。

public TestArrayList() 
{ 
    selection(); 
} 
+0

皆さん、助けてくれてありがとう!それはそれを修正した。私は正直になるつもりです。私はなぜメソッドを呼び出す必要があるかを完全に理解していません。また、コンストラクタ内で、またはselectColorメソッド内でメソッド呼び出しを実行するかどうかは重要ですか? –

+0

私には新しい問題があります。もしあなたがもう一度手伝ってくれれば、それは素晴らしいものになるでしょう。前からのエラーメッセージは消えました。しかし、1,2、または3を入力すると、今度は "Fire"というテキストが1行で返されますが、次の行には "無効な選択"も返されます。なぜそれは2行目を返しますか?ありがとう –

+0

@NickGiordano最後の 'if ... else ...'文は、 'colorCode!= 3'が' else'の中でコードを実行する場合を意味します。私はそれを解決すべき[switch文](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html)を使うことを提案します。 – lenny