Java 逐行将.txt文件读入ArrayList

Java 逐行将.txt文件读入ArrayList,java,android,arraylist,java.util.scanner,indexoutofboundsexception,Java,Android,Arraylist,Java.util.scanner,Indexoutofboundsexception,在我最新的项目中,我使用了一个名为“atestfile.txt”的.txt文件,它位于我创建的projects/raw文件夹中: 这就是它的内容: 现在使用这几行简单的代码 我希望我的应用程序将文本文件中的单词逐行插入我的ArrayList,如中所示 但是,不会出现祝酒词,更糟糕的是,我会收到一个IndexOutOfBoundsException,用于测试;我使用的行和应用程序崩溃 我花了一整天的时间试图摆脱这个错误,但还没有成功。 既然这里有很多聪明的人,我想了解一下这个问题,我想在把我

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

这就是它的内容:

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

我希望我的应用程序将文本文件中的单词逐行插入我的ArrayList,如中所示

但是,不会出现祝酒词,更糟糕的是,我会收到一个IndexOutOfBoundsException,用于测试;我使用的行和应用程序崩溃

我花了一整天的时间试图摆脱这个错误,但还没有成功。 既然这里有很多聪明的人,我想了解一下这个问题,我想在把我的电脑扔出窗外之前,先请你们帮忙

我将向你们提供我的错误消息、可复制和粘贴的代码以及我的数据包结构,以便在这个问题上获得更多帮助

package com.niklas.cp.citypopulation;

final ArrayList test=new ArrayList();
试一试{
Scanner Scanner=new Scanner(新文件(“android.resource://com.niklas.cp.citypopulation/raw/atestfile.txt”);
while(scanner.hasNextLine()){
makeToast(scanner.nextLine(),1);
test.add(scanner.nextLine());
}
scanner.close();
}catch(filenotfounde异常){
e、 printStackTrace();
}
字符串abc=test.get(3);
tv_highscore.setText(abc);

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

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);

不要将文本作为图像输入。请在此处发布实际文本。此外,stacktrace指示测试数组的长度为0,但您希望它包含文本文件值,因此可能没有正确输入。请不要使用图像。你的bug在
新文件中("android.resource://com.niklas.cp.citypo…
。在
/
之后有一个空格。这导致在您发布的异常之前出现一个异常。@SherifelKhatib嘿,我将确保在接下来的任何问题中都不使用任何图像。很好,我更正了
/
之后的空格,不幸的是,它没有解决问题问题。@NiklasDaute您还应该编辑此问题并替换图像。您可以使用问题下方的编辑链接进行编辑。嘿,InputStream是我问题的解决方案。谢谢!
InputStream file = getResources().openRawResource(R.raw.atestfile);
Scanner scanner = new Scanner(file);