2-мерный массив не работает - PullRequest
0 голосов
/ 03 мая 2018

У меня есть двухмерный массив, который получает конкретного животного из текстового файла, но по какой-то причине он вообще не работает. Я проверил на наличие ошибок, но я не получаю ошибок просто нет вывода. Он просто продолжает выводить «не удалось найти файл», который, как я знаю, не соответствует действительности

TEXT

Hat, dog, cat, mouse
Cow, animal, small, big, heavy
Right, left, up, down ,behind
Bike, soccer, football, tennis, table-tennis

код

try {
    animals = new Scanner(new File("animals.txt"));
    // code for number of lines start
    File file =new File("animals.txt");

    if(file.exists()){

        FileReader fr = new FileReader(file);
        LineNumberReader lnr = new LineNumberReader(fr);

        int linenumber = 0;

        while (lnr.readLine() != null){
            linenumber++;
        }

        lnr.close();

        // code for number of lines end

        String[][] animal = new String [linenumber][];

        for (int i = 0; i < linenumber; i++) {
            String line = animals.nextLine();
            String [] oneRowAnimals = line.split(",");
            for(int j=0; j<oneRowAnimals.length; j++) {

                // Here you are storing animals
                animal[i][j] = oneRowAnimals[j];
            }
        }
        // Now you can access them by index.

        System.out.println(animal[2][2]);

    } else{
        System.out.println("File does not exists!");
    }
} catch(Exception e) {
    System.out.println("could not find file");
}

1 Ответ

0 голосов
/ 03 мая 2018

Вам нужно инициализировать ваши подмассивы с размером. Попытка доступа к этим неинициализированным подмассивам по индексу приводит к исключению NullPointerException. Введите код:

animal[i] = new String[oneRowAnimals.length];

после строки:

String [] oneRowAnimals = line.split(",");

Как было предложено в комментариях, при отладке такого кода очень полезно избегать проглатывания всех типов исключений. Хорошей идеей будет перехват определенных исключений, которые могут быть сгенерированы кодом в блоке try, или, по крайней мере, печать более информативного сообщения в вашем блоке catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...