2012-04-19 7 views
2

У меня есть текстовый файл, в котором половина строк имена и каждая вторая линия представляет собой ряд целых чисел, разделенных пробелами:Как превратить текстовую строку целых чисел в массив целых чисел?

Jill 

5 0 0 0 

Suave 

5 5 0 0 

Mike 

5 -5 0 0 

Taj 

3 3 5 0 

Я успешно превратило имена в ArrayList строк, но я d хотел бы иметь возможность читать каждую другую строку и превращать ее в arraylist целых чисел, а затем создавать arraylist этих списков массивов. Вот что у меня есть. Я чувствую, что он должен работать, но, очевидно, я ничего не делаю правильно, потому что ничего не заполняет список массивов целых чисел.

rtemp является arraylist одной строки целых чисел. аграция - это архарист арраистов.

while (input.hasNext()) 
     { 

      count++; 

      String line = input.nextLine(); 
      //System.out.println(line); 

      if (count % 2 == 1) //for every other line, reads the name 
      { 
        names.add(line); //puts name into array 
      } 

      if (count % 2 == 0) //for every other line, reads the ratings 
      { 
       while (input.hasNextInt()) 
       { 
        int tempInt = input.nextInt(); 
        rtemp.add(tempInt); 
        System.out.print(rtemp); 
       } 

       allratings.add(rtemp); 
      } 

     } 

ответ

4

Это не работает, потому что вы читаете строку перед проверкой, была ли она строковой линией или строкой int. Поэтому, когда вы вызываете nextInt(), вы уже находитесь над строкой с цифрами.

Что вы должны сделать, это переместить String line = input.nextLine(); в первом случае или, еще лучше, работа на линии непосредственно:

String[] numbers = line.split(" "); 
ArrayList<Integer> inumbers = new ArrayList<Integer>(); 
for (String s : numbers) 
    inumbers.add(Integer.parseInt(s)); 
+0

Спасибо так много! Из любопытства, почему ваше второе предложение лучше? – WAMoz56

+0

Вероятно, должно допускать множественные пробелы между числами с '' line.split ("+") '' или любые пробелы с '' line.split ("\\ s +") '' (Помните, что arg для split является регулярным выражением) – sw1nn

+0

Также , как заставить его останавливать чтение целых чисел, когда это делается с помощью строки? Есть ли все равно, чтобы вставить логическое значение (до разрыва строки) или что-то в этом роде? EDIT Не обращайте внимания. Я понял. – WAMoz56

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