2014-10-13 6 views
0

Я пытаюсь прочитать ввод из текстового файла (только для чтения в arraylist). Мой текстовый файл выглядит следующим образом, содержащие числа (146,7, -1, -2,3) .Это выглядит это на самом деле: HEADER 1467-1-23Parse Текстовый файл в Java

Теперь, когда я ставлю HEADER строку в файле , мой код не будет читать первое число, которое в моем случае 146, и начинается со второго номера «7». Однако, когда строки HEADER там нет, также читается 146, что, очевидно, я хочу. Мой код - это :

String pathToWrite="C:\\Users\\User\\Desktop\\Hello.txt"; 

FileReader fr=new FileReader(pathToWrite); 
    BufferedReader bufferedReader=new BufferedReader(fr); 

    String aLine=null; 
    int numberOfLine=0; 
    List<Integer> list = new ArrayList<Integer>(); 
    List<Integer> list2 = new ArrayList<Integer>(); 


    while((aLine=bufferedReader.readLine()) != null) 
    { 
      if(numberOfLine > 1) //since header lies in first line,I want to skip that line 
      { 
      list.add(Integer.parseInt(aLine)); 
      } 
      numberOfLine++; 


    } 

Хотите предложения о том, как я могу изменить код, чтобы прочитать первый номер тоже? Заранее спасибо

+0

вы имеете в виду первую строку, которая пропущен? –

+0

Нет, я имею в виду, как читать первый номер в списке, который в моем случае равен 146. Первая строка будет пропущена, поскольку я помещаю оператор if. – Shehlina

+0

Из номера '1467-1-23'. Как вы разобрались? что '146' - это одно число, а 7 - другое. Форматирован ли формат? Например, я могу сказать, что '146' на самом деле 3 числа -' 1', '4' и' 6'. – Tirath

ответ

0

Измените свой статус или номерOfLine = 0; переменная. Вы можете сделать одно из следующих действий

Случай 1:

int numberOfLine=0; 

while((aLine=bufferedReader.readLine()) != null) 
    { 
      if(numberOfLine >= 1) //since header lies in first line,I want to skip that line 
      { 
      list.add(Integer.parseInt(aLine)); 
      } 
      numberOfLine++; 


    } 

============================= ===============================
Случай 2:

int numberOfLine=1; 

while((aLine=bufferedReader.readLine()) != null) 
    { 
      if(numberOfLine > 1) //since header lies in first line,I want to skip that line 
      { 
      list.add(Integer.parseInt(aLine)); 
      } 
      numberOfLine++; 


    } 
0

Split вашей линии, используя функцию разделения струны

String [] numbers = aLine.split(","); 

Это даст вам все номера в массиве.

Надеюсь, он разрешит ваш запрос !!!

1

файл выглядит следующим образом:

HEADER 
146 
7 
1 
23 

? Затем попробуйте if(numberOfLine > 0). Это потому, что вы начинаете считать с нуля.

0

Типичный > против >= typo. Просто измените if(numberOfLine > 1) на if(numberOfLine >= 1).

0

Файл выглядит следующим образом:

HEADER 1467-1-23 

Если это так, приведите пример второй линии. Потому что это одна строка, id = 0; или вот так?

HEADER 
1467-1-23 
... 
Смежные вопросы