This question already has answers here:
How to determine the end of a line with a Scanner?

(4个答案)


5年前关闭。




我正在尝试阅读此模式... 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;
497498-1; 499-1; 500-1;


我需要将489、490、491放在一个控件数组中,并将490、1、4911、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());
   }
}


如何控制下一行?

最佳答案

我可能会这样:

伪代码:

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

07-26 05:12