【发布时间】:2015-09-04 13:15:10
【问题描述】:
在下面的代码中,我尝试获取所有科目的成绩。我通过 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();
}
}
【问题讨论】:
-
不是 NullPointerException 的原因,但最后一次迭代将尝试访问
gradeName[gradeName.length],这是超出范围的,因为索引是从零开始的。使用i < gradeName.length(<而不是<=)或使用'enhanced for-loop' 遍历所有项目。 -
数组的索引以
0开头,以length-1结尾
标签: java arrays for-loop nullpointerexception