【问题标题】:Reading arraylist from a .txt file从 .txt 文件中读取数组列表
【发布时间】:2013-08-11 20:22:25
【问题描述】:

我有一个应用程序,用户在其中输入某些单词,这些单词会保存到设备上的 .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' 将是作为单独的元素添加到数组列表中。

举例说明它应该如何工作:

文本文件的外观(示例)

测试 1

测试 2

测试 3

arraylist 现在的样子:

测试

1

测试

2

测试

3

arraylist 应该是什么样子:

测试 1

测试 2

测试 3

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

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    使用.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
        }
    

    Documentation

    【讨论】:

    • @Matthew 很高兴我能帮上忙!
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      您可以使用scanner.nextLine();

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2016-05-03
          • 1970-01-01
          • 2020-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多