2015-04-20 3 views
0

Я пытаюсь прочитать этот шаблон ... Что такое Scanner.useDelimiter?Как использовать разделитель, чтобы найти конец строки?

Этот вход:

489 490-1; 491-1; 492-1; 493-1; 494-1; 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
490 491-1; 492-1; 493-1; 494-1; 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
491 492-1; 493-1; 494-1; 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
492 493-1; 494-1; 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
493 494-1; 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
494 495-1; 496-1; 497-1; 498-1; 499-1; 500-1;
495 496-1; 497-1; 498-1; 499-1; 500-1;
496 497-1; 498-1; 499-1; 500-1;
497 498-1; 499-1; 500-1;

Мне нужно поставить 489, 490, 491 в один массив управления и 490, 1, 491, 1 (второй столбец и их) в одну коллекцию.

Я попробовал этот ограничитель, но он не работает:
Scanner(readerFile).useDelimiter("[^0-9]+");

Потому что он находится в петле в моем while(readerFile.hasNextInt()) и не вызвать функцию nextLine(), чтение всех входов в коллекции.

while (readerFile.hasNextLine()){ 
    readerFile.nextLine(); 
    vector[i] = readerFile.nextInt(); 
    while (readerFile.hasNextInt()){ 
     linkedList.add(reader.nextInt()); 
    } 
} 

Как управлять следующей линией?

+1

После удаления тегов из названия, есть на самом деле название не осталось. [Должны ли вопросы включать теги в заголовке?] (Http://meta.stackexchange.com/q/19190) – jww

+0

его лучше? ... –

+0

'useDelimiter' не влияет на поведение' nextLine', afaik. Когда вы вызываете nextLine, вся строка будет потребляться (и в вашем случае, поскольку вы не назначаете ее переменной, она выбрасывается) – nhahtdh

ответ

1

я бы, вероятно, сделать это таким образом:

псевдокод:

While has next line 
    s = next line 
    split = s.split(" ", 2); 
    vector[i] = split[0]; // or whatever you want to do with the first value 
    values = split[1].split(";") 
    foreach value in values 
     linkedList.add(value); // or whatever you want to do with the rest of the values 
+0

Я не получил его здесь, после; есть пробел, не вызывайте ошибки в первом расколе? –

+1

@NicolasBontempo Первый сплит выполняется с помощью 'split (" ", 2)', который ограничивает количество частей до двух, т. Е. Разбивается только на первое пространство – Smallhacker

+0

Хорошо, спасибо, я попробую и вернусь, чтобы ответить, если Работа (: –

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