Java ArrayList的空指针异常

Java ArrayList的空指针异常,java,arraylist,Java,Arraylist,我正试图开始学习BlueJ中的Java,但我一直在努力。现在我在看ArrayList。以下代码编译正确: import java.util.ArrayList; public class TestArrayList { public static int colorCode; public ArrayList<String> selection; public TestArrayList() { } private void se

我正试图开始学习BlueJ中的Java,但我一直在努力。现在我在看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");
    }
}
编辑器高亮显示包含代码“selection.get(0)”的行,并返回错误“java.lang.Null.Pointer Exception:Null”


我相信你可以从我说话的方式看出我对Java知之甚少。很明显我做错了什么吗?感谢所有能够提供帮助的人。

您的方法
选择
不会被调用。因此,您的ArrayList为空。对空引用调用方法会导致NullPointerException

在构造函数中调用该方法

public TestArrayList()
{
   selection();
}

您的方法
选择
未被调用。因此,您的ArrayList为空。对空引用调用方法会导致NullPointerException

在构造函数中调用该方法

public TestArrayList()
{
   selection();
}

“但是当我尝试运行方法“selection”时”“这不是真的,您正在调用
selectColor
”,但当我尝试运行方法“selection”时”“这不是真的,您正在调用
selectColor
。谢谢大家的帮助!这就解决了问题。我要说实话;我不完全理解为什么我需要调用这个方法。另外,如果我将方法调用放在构造函数中,或者放在selectColor方法中,这有关系吗?我有一个新问题。如果你能再帮我一次,那就太好了。以前的错误消息现在已消失。但是,现在,当我输入1、2或3时,它会返回我的“Fire”文本,例如,在一行中,但在下一行中也会返回“Invalid selection”。为什么它返回第二行?Thanks@NickGiordano最后一个
如果。。。else…
语句的意思是:if
colorCode!=3
执行
else
中的代码。我会建议用哪个解决它。谢谢大家的帮助!这就解决了问题。我要说实话;我不完全理解为什么我需要调用这个方法。另外,如果我将方法调用放在构造函数中,或者放在selectColor方法中,这有关系吗?我有一个新问题。如果你能再帮我一次,那就太好了。以前的错误消息现在已消失。但是,现在,当我输入1、2或3时,它会返回我的“Fire”文本,例如,在一行中,但在下一行中也会返回“Invalid selection”。为什么它返回第二行?Thanks@NickGiordano最后一个
如果。。。else…
语句的意思是:if
colorCode!=3
执行
else
中的代码。我会建议使用哪种方法来解决这个问题。