从文件中读取输入,Scanner.nextLine()会产生空白结果

时间:2015-10-01 15:23:07

标签: java regex file-io

所以,我的最终目标是使用输入文件来实例化ArrayList Letter对象。该文件包含以下格式的多个案例:

from-to
line 1
...
line n

(***用作新字母的指示符。输入行之间没有空行,换句话说,每行后面都会返回一行,然后是下一行。)

然而,在我尝试实例化多个Letter对象之前,我只是想让第一个对象工作。

Scanner in = new Scanner(_file).useDelimiter("\\s+?|-");
ArrayList<Letter> letters = new ArrayList();
String from = in.next();
String to = in.next();
Letter temp = new Letter(from,to);
String s = in.next();
temp.addLine(s);

其中Letter对象为收件人和编写者带两个字符串,然后可以添加行。所以我的输出应该是:

Dear Recipient:
Line 1
...
Line n
Sincerely,
Writer

但是当我使用它时,我的输出是:

Dear Recipient:


Sincerely,
Writer

1 个答案:

答案 0 :(得分:0)

文档Scanner.nextLine()说明了这一点:

  

使此扫描程序超过当前行并返回该输入   被跳过了。此方法返回当前行的其余部分,   排除末尾的任何行分隔符。该职位设定为   下一行的开头。

那么这个方法实际上做的是只给你那条线留下什么

所以,你需要这样做:

Scanner in = new Scanner(_file).useDelimiter("\\s+?|-");
ArrayList<Letter> letters = new ArrayList();
String from = in.next();
String to = in.next();
Letter temp = new Letter(from,to);
in.nextLine(); // <-- this is extra

// now we're ready to read the rest of the stuff
String s = in.nextLine();
temp.addLine(s);