2015-09-04 4 views
-2

В приведенном ниже коде я стараюсь получить оценку всех моих предметов. Я получаю вход через цикл for. Но я должен хранить оценку (например, «C») в массиве оценки, но я получаю исключение NullPointerException. Я не понимаю, что не так с моим кодом, так как я думал, что это хорошо. Также игнорируйте имена предметов, так как они находятся на шведском языке.NullPointerException in for loop

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

Не причина исключения NullPointerException, но последняя итерация попытается получить доступ к 'gradeName [gradeName.length]', что выходит за рамки, потому что индексирование основано на нуле. Используйте 'i

+1

Индекс массива начинается с '0' & заканчивается' length-1' –

ответ

0

Вы пытаетесь использовать массив grade [] перед его инициализацией. Попробуйте

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

И в в вашей цикл for(int i = 0; i <= gradeName.length; i++)
При эксплуатации состоянии только «<» вместо «< =» как этот
for(int i = 0; i < gradeName.length; i++)
, потому что 0 является первым индексом и размер-1 является последним индекс.

0

Это очень очевидно, вам нужно сначала присвоить класс оценки! В конструкторе:

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

На самом деле я предпочитаю использовать ArrayList вместо массива в вашем случае.