我有一个应用程序,用户输入某些单词,并将这些单词保存到设备上的.txt文件中。然后我从.txt文件创建arraylist。这是代码:
try {
Scanner s = new Scanner(recordedFiles);
recordedFilesArray = new ArrayList<String>();
while (s.hasNext()){
recordedFilesArray.add(s.next());
}
s.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
现在,问题是这会将每个单词都放在arraylist中,而不是每行。因此,如果用户输入(例如)'test1',它会将它作为test1添加到arraylist(这很好),但如果用户输入'test 1'(带空格),'test'和'1'将是作为单独的元素添加到arraylist。
展示一个如何运作的例子:
文本文件的外观(示例)
测试1
测试2
测试3
arraylist现在的样子如何:
测试
1
测试
2
测试
3
arraylist应如何显示:
测试1
测试2
测试3
所以我的问题是;如何将LINES添加到arraylist,而不是从.txt文件中添加单词
答案 0 :(得分:5)
使用.nextLine()
,其功能如下:
使此扫描程序超过当前行并返回该输入 被跳过了。此方法返回当前行的其余部分, 排除末尾的任何行分隔符。该职位设定为 下一行的开头。
Matt Ball表示,while循环应使用hasNextLine()
代替hasNext()
try {
Scanner s = new Scanner(recordedFiles);
recordedFilesArray = new ArrayList<String>();
while (s.hasNextLine()){
recordedFilesArray.add(s.nextLine());
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
s.close(); //close file on success or error
}
答案 1 :(得分:2)
答案 2 :(得分:0)
而不是使用scanner.next();
使用scanner.nextLine();
答案 3 :(得分:0)
您可以使用scanner.nextLine();