2015-04-26 3 views
3

поэтому в цикле while я печатаю некоторые элементы хранилища ArrayList. но потом, когда я его назову, он говорит, что массив, возможно, не был инициализирован.переменная, возможно, не была инициализирована?

любые мысли? Я пытаюсь прочитать файл строк. каждая строка имеет не менее 8 элементов, и я уверен, что массив не пуст, потому что я напечатал его в цикле while.

?

public class ReaderFile { 
    public static Scanner input; 
    public static Scanner input2; 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 

     int count=0; 
     ArrayList<Team> store; 
     ArrayList<Robot> store2; 
     //Robot robot; 

     String fileLocation = "Tourney2Teams.csv"; 
     String fileLocation2 = "Tourney1robots.csv"; 


     try{ 
      input = new Scanner(new File(fileLocation)).useDelimiter(","); 
     } 
     catch (IOException ioException) 
     { 
      System.out.print("PROBLEM"); 
     } 


     try { 
      input2 = new Scanner(new File (fileLocation2)).useDelimiter(","); 
     } 
     catch (IOException ioException) 
     { 
      System.out.print("problem with robot"); 
     } 


     try{ 
       input.nextLine(); 
       System.out.print("PLEAse\n"); 
       int countt = 0; 
       while(input.hasNext()) 
       { 
         //int countt = 0; 
         int ID = input.nextInt(); 
         String teamName = input.next(); 
         String coachFirst = input.next(); 
         String coachLast = input.next(); 
         String mentorFirst = input.next(); 
         String mentorLast = input.next(); 
         String teamFs = input.next(); 
         String teamSS = input.next(); 
         input.nextLine(); 
         store = new ArrayList<>(); 
         Team team = new Team (teamName, ID, coachFirst, coachLast,mentorFirst,mentorLast,teamFs,teamSS); 
         store.add(team); 
         System.out.print("Team Numer"+store.get(0).teamNumber+"\n"); 
         countt = countt+1; 
         System.out.print("\n"+countt); 
       } 
     } 
     catch (NoSuchElementException statExcemtion) 
     { 
      System.out.print("\nAnkosh"); 
     } 
     String x = store.get(2).teamName; 
    } 
} 
+1

Что делать, если файл пуст? Тогда что будет «хранить»? – Radiodef

ответ

0
store = new ArrayList<>(); 

Эта линия инициализирует магазин на каждом проходе в while. Возможно, вы захотите инициализировать его до while для накопления при циклировании.

Он говорит, что он не был инициализирован, потому что по какой-то причине он никогда не выполнял цикл while (пустой ввод).

0

Это может быть инициализирован в двух случаях:

  1. NoSuchElementException исключение в вашем Ьгу блоке, в этом случае ваш catch блок выполняется, и store не инициализирован. Я хотел бы предложить либо return от блока catch, либо переместить вашу линию String x = внутри блока try.

  2. Ваша петля выполняет нулевые итерации. В этом случае store также неинициализирован. Он также выглядит как логическая ошибка, вы, вероятно, хотите, чтобы ваш store был создан до цикла while.

Я также хотел бы предложить, чтобы проверить, что store имеет по крайней мере три элемента до доступа к элементу 2.

Смежные вопросы