for循环中的NullPointerException

时间:2015-09-04 13:15:11

标签: java arrays for-loop nullpointerexception

在下面的代码中,我尝试获得所有科目的成绩。我通过for循环获得输入。但我应该在等级数组中存储等级(例如“C”),但我得到一个NullPointerException。我不明白我的代码有什么问题,因为我认为它很好。 此外,忽略主题的名称,因为它们是瑞典语。

public class Defan{

Scanner sc = new Scanner(System.in);
String grade[];
String gradeName[] = {"Svenska1", "Svenska2", "Svenska3", "Engelska5", "Engelska 6",
        "Mattematik 1c", "Mattematik 2c", "Mattematik 3c", "Mattematik 4", "Idrott", "Samhälle", "Religion",
        "Historia", "Biologi1", "Biologi2", "Fysik1", "Fysik2", "Kemi1", "Kemi2", "Franska3", "Franska4", "Körsång1", "Körsång2"
        , "Gymnasiearbete"};

public void getInput(){
    for(int i = 0; i <= gradeName.length; i++){
        System.out.println("Enter grade for " + gradeName[i] + ": ");
        grade[i] = sc.nextLine();
    }


}

2 个答案:

答案 0 :(得分:0)

您正在尝试在初始化之前使用grade []数组。尝试

String grade[] = new String[gradeName.length] <br>

在你的for循环for(int i = 0; i <= gradeName.length; i++)中 在条件下仅使用'&lt;'而不是像这样的'&lt; ='  for(int i = 0; i < gradeName.length; i++)
因为0是第一个索引,size-1是最后一个索引。

答案 1 :(得分:0)

很明显,你必须先分配等级数组! 在你的构造函数中:

final int SIZE = 1024;
grade = new String[SIZE];

实际上我更喜欢在你的情况下使用ArrayList而不是数组。