-1

Я новичок на Java (и программирование в целом). Я ввод информации из текстового файла, который содержит следующий текст:Java - ArrayIndexOutOfBoundsException при вводе информации из текстового файла

Gordon Freeman 27

Адриана Шепарда 22

Барни Калхун 19

Аликс Вэнс 23

У меня получилось ArrayIndexOutOfBoundsException в этом методе:

private static void readFile2() { 

    System.out.println("\nReading from file 2:\n"); 

    File file = new File("C:/Users/Reflex FN/Documents/IOTest2/text.txt"); 

    try { 

     BufferedReader readFromFile = new BufferedReader(
       new FileReader(file)); 

     String read = readFromFile.readLine(); 

     while(read != null) { 

      String[] readSplit = read.split(" "); 
      int age = Integer.parseInt(readSplit[2]); 
      System.out.println(readSplit[0] + " is " + age + " years old."); 
      read = readFromFile.readLine(); 

     } 

     readFromFile.close(); 

    } catch (FileNotFoundException ex) { 

     System.out.println("File not found: " + ex.getMessage()); 

    } catch (IOException ex) { 

     System.out.println("IO Exception: " + ex.getMessage()); 

    } 

} 

Это работало впервые; он напечатан:

Гордону Фримену 27 лет.

Однако, прежде чем что-либо еще было напечатано, было выведено исключение ArrayIndexOutOfBoundsException. Что я сделал не так, точно? Источник, за исключением, кажется, эта линия:

int age = Integer.parseInt(readSplit[2]); 

Кстати, я новичок здесь, так что я надеюсь, что не теряются на этот вопрос.

спасибо. :)

ответ

0

Ваш текстовый файл содержит новый линий. В этом заявлении вы получаете исключение

int age = Integer.parseInt(readSplit[2]); 

Изменить код

for (String read = readFromFile.readLine(); read != null; read = readFromFile.readLine()) { 
      System.out.println(read+"a"); 
      if(!read.equals(""))//to check whether the line is empty 
      { 
      String[] readSplit = read.split("\\s+"); 
      int age = Integer.parseInt(readSplit[2]); 
      System.out.println(readSplit[0] + " is " + age + " years old.");  
      } 
     } 
+0

Большое спасибо! :) –

2

Я думаю, что у вас могут быть новые строки в вашем файле text.txt. Попробуйте изменить содержимое файла в -

Gordon Freeman 27  
Adrian Shephard 22  
Barney Calhoun 19  
Alyx Vance 23 

Если вы получили новую линию между Гордоном Фрименом 27 и Адриан Шепард 23. Это отбросит следующее сообщение об ошибке -

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2 
Смежные вопросы