所以,我的最终目标是使用输入文件来实例化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
答案 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);