Массив выводит только четные значения индекса? - PullRequest
0 голосов
/ 06 мая 2020

Итак, у меня есть текстовый файл с очень простым текстом. Каждая строка - это просто марка, модель, вин #. У меня есть примерно 3 или 4 строки для тестирования. Когда я распечатываю эти строки, печатаются только строки с четными индексами. Если я не включу оператор else, он выдаст исключение за пределами допустимого диапазона. Так, например, с вводом текстового файла, как показано:

  1. make1, model1,1
  2. make2, model2,2
  3. make3, model3,3
  4. make4, model4,4
  5. make5, model5,5

Вывод в консоли: make1 model1 1 make2 model2 2 make3 model3 3 Исключение в потоке «main» java .lang.ArrayIndexOutOfBoundsException: 1 make4 model4 4 make5 model5 5

public CarDealershipSystem(File carFile, File associateFile) {

    try (BufferedReader br = new BufferedReader(new FileReader(carFile))) {
        String line;
        for(;;) {
            line = br.readLine();
            String[] lineArray = line.split(",");
            System.out.println(lineArray[0]);
            System.out.println(lineArray[1]);
            System.out.println(lineArray[2]);
        }
    }catch(IOException e) {
        e.getLocalizedMessage();
        e.printStackTrace();
    }

Ответы [ 2 ]

1 голос
/ 06 мая 2020

У вас есть «line = br.readLine ()» в двух местах в цикле «while» и в блоке «if», что вызывает два вызова readLine за цикл. Кроме того, этот блок бессмысленен, потому что условие "while" уже обрабатывает его.

tldr: remove

if((line = br.readLine()) == null) {
                break;
            }
0 голосов
/ 06 мая 2020
  1. вам нужен перерыв, когда вы дойдете до конца файла.
String line;
while((line = br.readLine()) != null) { //stop loop when line == null
            line = br.readLine();
       }

вам необходимо проверить введенные данные перед разделением
String[] lineArray = line.split(",");
if (lineArray != null && lineArray.length == 3) { //will help you avoid the ArrayIndexOutOfBoundsException exception 
            System.out.println(lineArray[0]);
            System.out.println(lineArray[1]);
            System.out.println(lineArray[2]);
}

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