1

我有一个应用程序,用户在其中输入某些单词,这些单词会保存到设备上的 .txt 文件中。然后我从那个 .txt 文件创建数组列表。这是代码:

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',它会将其添加到 arraylist 作为 test1(这很好),但如果用户输入'test 1'(带空格),'test' 和 '1' 将是作为单独的元素添加到arraylist。

展示一个应该如何工作的例子:

文本文件的外观(示例)

测试 1

测试 2

测试 3

arraylist 现在的样子:

测试

1

测试

2

测试

3

arraylist 应该是这样的:

测试 1

测试 2

测试 3

所以我的问题是;如何将 LINES 添加到 arraylist,而不是从 .txt 文件中分隔单词

4

4 回答 4

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
    }

文档

于 2013-08-11T20:23:39.993 回答
2

Scanner#hasNextLine()与 一起使用Scanner#nextLine(),而不Scanner#hasNext()与 一起使用Scanner#next()

于 2013-08-11T20:23:08.910 回答
0

而不是使用scanner.next();使用scanner.nextLine();

于 2013-08-11T20:23:39.993 回答
0

您可以使用scanner.nextLine();

于 2013-08-11T20:24:05.010 回答