线程“main”中的异常java.lang.NullPointerException - 不明白为什么?

时间:2013-11-29 23:14:05

标签: java

我现在仍然是Java的初学者并且正在编写学生记录程序,并且我坚持这些错误,并且无法解决原因。

Exception in thread "main" java.lang.NullPointerException
at Results.Results(Results.java:11)
at Main.main(Main.java:21)

这是我的主要课程中的错误,在第21行(下面的第二行)。

public class Main 
{
    public static void main(String[] args) 
    {

        StudentNames nameInputobject = new StudentNames();
        nameInputobject.StudentNames();


        Subject subjectInputobject = new Subject();
        subjectInputobject.Subject();

        StudentNumber numberInputobject = new StudentNumber();
        numberInputobject.StudentNumber();      

        StudentYear yearInputobject = new StudentYear();
        yearInputobject.StudentYear();  

        Results resultsInputobject = new Results();
        resultsInputobject.Results();   // <<<error here




    }
}    

以及我的结果类中的错误

    import java.util.ArrayList;
import java.util.Scanner;

public class Results 
{
    public static void Results()
    {

        StudentYear obj=new StudentYear();
        ArrayList<Integer> studentYear=obj.getStudentYear();
        int year=studentYear.get(0); // <<<<error here 
        ArrayList<Integer> results = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter the results for "+year+":");
        results.add(sc.nextInt());
        System.out.println(results);

        }
    }

结果类从另一个类的arraylist中获取studentYear值 代码在这里。

import java.util.ArrayList;
import java.util.Scanner;

public class StudentYear 
{
    private ArrayList<Integer> studentYear;
    public void StudentYear()
    {
        studentYear = new ArrayList<Integer>();
        Scanner sc = new Scanner(System.in); 
        System.out.println("Please enter the year the student has most recently completed: ");
        studentYear.add(sc.nextInt());
        System.out.println(studentYear);
        }
        public ArrayList<Integer> getStudentYear()
        {
            return studentYear;
            }
}

我正在使用Arraylists,因为我计划最终使程序循环以保存多个学生值

1 个答案:

答案 0 :(得分:0)

请注意,studentYear变量是ArrayList<Integer>的实例。这意味着它是对象Integer的集合。这是基本数据类型int的“盒装”包装器。

Integer对象可以为null,但int不能。

假设您尚未向此ArrayList添加任何内容,则位置0处的元素将为null。当VM尝试将此null Integer实例转换为原始int时,它会抛出NullPointerException