3D-массив принимает значение NULL в качестве входных данных, используя Java.util.Scanner.nextInt () - PullRequest
0 голосов
/ 06 июня 2018

Следующий код дает исключение NullPointerException при вводе элементов массива.После отладки и анализа я обнаружил, что исключение встречается только тогда, когда я использую трехмерный массив.Для 2д работает нормально.Очевидно, по какой-то причине массив принимает значение null в качестве входных данных.Может кто-нибудь объяснить это?Возможно, что-то не так с массивом 3d.

Редактировать: Кроме того, в моем случае значение 3-го измерения неизвестно, так как оно будет зависеть от значения arr [0] [0] [0], котороедолжен быть введен первым.Таким образом, длина 3-го измерения должна быть назначена во время выполнения.

import java.util.*;
public class NewClass 
{
    public static void main(String args[])
    {
        int T;
        Scanner sc = new Scanner (System.in);
        T=sc.nextInt();//this works fine
        int arr[][][]= new int[T][4][];
        for(int i=0;i<T;i++)
        {
            for(int j=0;j<3;j++)
            {
                arr[i][j][0]=sc.nextInt();//NullPointerException after input

            }

        }
    }
}

1 Ответ

0 голосов
/ 06 июня 2018

Вы не указали (или не инициализировали) третье измерение.

Вы можете изменить инициализацию arr как

int arr[][][]= new int[T][4][1];

Или можете создать массив третьего измерения внутривнутренний для петли

for(int j = 0; j < 3; j++) {
    arr[i][j] = new int[1];
    arr[i][j][0] = sc.nextInt();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...