Member 14010184 Ответов: 1

Как отобразить мой зубчатый массив без ошибки nullpointerexception


Каждый раз, когда я запускаю свой код, я получаю эту ошибку:

Исключение в потоке "main" java.lang.Исключение NullPointerException

Что я уже пробовал:

import java.util.Scanner;
public class JaggedArray 
{

	public static void main(String[] args)
	{
		
		int[][] jArr; 
		jArr = new int[25][];
		System.out.println("Please enter number of students:");
		Scanner sc = new Scanner(System.in);
		int students = sc.nextInt();
		for (int i = 0; i < students; ++i)
		{
			System.out.println("How many grades does student " + (i+1) + " have:");
			int gradeNum = sc.nextInt();
			jArr[i] = new int[gradeNum];
			for (int j = 0; j < gradeNum; ++j)
			{
				System.out.println("Please enter grade " + (j+1) + ":");
				jArr[i][j] = sc.nextInt();
			}
		}
		System.out.println("Your array is: ");

                //It shows an error in my method calling
		displayArray(jArr);
		
	
	public static void displayArray(int[][] jArr)
	{

		for(int i = 0; i < jArr.length; i++)
		{
                        //It shows an error on this nested for loop
			for(int j = 0; j < jArr[i].length; j++)
			{
				System.out.print(jArr[i][j] + " ");
			}
			System.out.println();
		}
	}
}

1 Ответов

Рейтинг:
12

CPallini

Цитата:
jArr = new int[25][];
Вышеприведенная строка является виновником. Переместите немного вниз определение массива:

//...
Scanner sc = new Scanner(System.in);
int students = sc.nextInt();
jArr = new int[students][]; // <- this is the right place (because you know 'students')
for (int i = 0; i < students; ++i)
//..