在下面的代码中,我尝试获得所有科目的成绩。我通过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();
}
}
答案 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而不是数组。