我有一个应用程序,用户输入某些单词,这些单词保存到设备上的.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();
}
Run Code Online (Sandbox Code Playgroud)
现在,问题在于这将每个单词都放在arraylist中,而不是每一行.因此,如果用户输入(例如)'test1',它会将它作为test1添加到arraylist(这很好),但如果用户输入'test 1'(带空格),'test'和'1'将是作为单独的元素添加到arraylist.
显示它应该如何工作的示例:
文本文件的外观(示例)
测试1
测试2
测试3
arraylist现在看起来如何:
测试
1
测试
2
测试
3
arraylist应该如何:
测试1
测试2
测试3
所以我的问题是; 如何将LINES添加到arraylist,而不是从.txt文件中添加单独的单词
使用.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
}
Run Code Online (Sandbox Code Playgroud)