2015-05-09 6 views
0

Мне нужно прочитать файл, взять строки и добавить их в собственный класс сервиса, а затем добавить этот класс сервиса в timeTable. Возвращаемое значение TimeTable пусто.Пустой набор возвращается без ошибок

  • Предположим, формат файла является правильным

Это файл:

3 
v1 
1 v2 v3 
2 v4 
3 

v2 
1 
2 v1 v4 
3 

Код:

while ((line = buffReader.readLine()) != null) { 

    if (firstLine){ 
     //Set session 
     numberOfSessions = Integer.parseInt(line.trim()); 
     firstLine = false; 

    } else if (line.trim().isEmpty()) { 
     correctSession = 0;  
    } else if(correctSession < numberOfSessions + 1) { 
     //Split the current line 
     String[] splitLine = line.split(" "); 

     //Check if it is the "Name" line 
     if (correctSession == 0) { 
      sourceName = line.trim(); 
      //Increase correct session 
      correctSession++; 
     } else { 
      //Add it to timetable as a service 
      for (int i = 1;i < lineSplit.size();i++) { 
       //Venue(String) 
       Venue source = new Venue(sourceName); 
       Venue destination = new Venue(splitLine[i]); 

       //Service(venue, venue, int) 
       Service service = new Service(source,destination,Integer.parseInt(splitLine[0])); 

       timeTable.addService(service); /* This does not seem to be working*/ 
      } 
      //Increase correct session 
      correctSession++; 
     } 
    }   
} 
//Close the reader 
buffReader.close(); 

Итоговом:

Actual: [] 
Expected: [Departs v1 after session 1 for v3, Departs v1 after session 2 for v4, Departs v1 after session 1 for v2, Departs v2 after session 2 for v4, Departs v2 after session 2 for v1] 

ответ

0

Если мне что-то не хватает, вы, кажется, повторяете неправильную вещь (имена переменных очень похожи). Но это,

for (int i = 1;i < lineSplit.size();i++) { 

должно быть (потому что массивы начинаются с 0) что-то вроде

for (int i = 0;i < splitLine.length;i++) { 

Или, используя The For-Each Loop как

for (String destinationName : splitLine) { 
    //Venue(String) 
    Venue source = new Venue(sourceName); 
    // Venue destination = new Venue(splitLine[i]); 
    Venue destination = new Venue(destinationName); 
+0

Причина я использую = 1, потому что я don; t хочу прочитать первый элемент, так как это число, и мне просто нужны имена v1 или v2. –

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