Java Can';t输入用户';s值到数组,NullPointerException错误

Java Can';t输入用户';s值到数组,NullPointerException错误,java,nullpointerexception,Java,Nullpointerexception,ans是Arraylist。我正在尝试添加用户的输入,它是字符串。当我运行它时,它会打印第一条消息,但当我输入“ch1”的值时出现错误。它基本上不读取它,并提示我出现空指针异常这几乎可以肯定是因为在调用add之前没有初始化ans。能否在调用setAns()之前尝试初始化它,或尝试将其声明为局部变量,例如: public void setAns() { if("TF".equals(queType)){ ans.add("True");

ans是Arraylist。我正在尝试添加用户的输入,它是字符串。当我运行它时,它会打印第一条消息,但当我输入“ch1”的值时出现错误。它基本上不读取它,并提示我出现空指针异常

这几乎可以肯定是因为在调用
add
之前没有初始化
ans
。能否在调用
setAns()
之前尝试初始化它,或尝试将其声明为局部变量,例如:

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");
        }
    }
List ans=new ArrayList();

基本上,当您以
null.member
null[index]
结束时,会抛出NPE。由于我们没有看到您的完整代码,也没有完整的堆栈跟踪,我们无法确定发生了什么,但根据您的描述,NPE似乎是从
ans.add(ch1)
抛出的。因为ArrayList保存null
ans.add(null)
应该可以正常工作,这表明它是
null.ans(ch1)
,这意味着您没有使用ArrayList实例初始化
ans
List<String> ans = new ArrayList<>();