逐行将.txt文件读入ArrayList

时间:2018-10-22 15:45:32

标签: java android arraylist java.util.scanner indexoutofboundsexception

在我的最新项目中,我使用一个名为 atestfile.txt 的.txt文件,该文件位于我创建的项目/ raw文件夹中:

location of file

这是其内容:

file content

现在使用这几行简单的代码。

code

我希望我的应用程序将文本文件中的单词逐行插入我的ArrayList 中,如this questions awesome first answer.

所示

但是,不会出现Toast,更糟糕的是,我将收到我使用的 test.get(3); 行的IndexOutOfBoundsException ,应用程序崩溃。

我整天都在尝试消除此错误,但尚未成功。 因此,由于周围有很多聪明的人,而且我想学习一些有关此问题的信息,所以我认为在将计算机扔到窗外之前,我会先向你们寻求帮助。

我将为您提供我的错误消息,复制和可粘贴的代码以及我的数据包结构,以在此问题上提供更多帮助。

package com.niklas.cp.citypopulation;

huge error message

   final ArrayList<String> test = new ArrayList<String>();

    try {

        Scanner scanner = new Scanner(new File("android.resource:// com.niklas.cp.citypopulation/raw/atestfile.txt"));

        while(scanner.hasNextLine()){


            makeToast(scanner.nextLine(),1);
            test.add(scanner.nextLine());

        }
        scanner.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    String abc = test.get(3);
    tv_highscore.setText(abc);

1 个答案:

答案 0 :(得分:2)

您在每个循环中两次调用scanner.nextLine(),但仅将第二行添加到test,因此test只有三行。
你必须这样写

while(scanner.hasNextLine()) {
   String s = scanner.nextLine();
   makeToast(s,1);
   test.add(s);
}

如果抛出FileNotFoundException异常,请尝试以下操作

InputStream file = getResources().openRawResource(R.raw.atestfile);
Scanner scanner = new Scanner(file);