将Java ArrayList内容逐行打印到控制台

Lui*_*hil 4 java arraylist

我是Java编程的新手,这实际上是我需要解决的一个问题的一部分:我正在逐行将一个文件的内容作为String读入ArrayList以供以后处理.我需要程序打印出来以在单独的行上控制ArrayList的内容,但运行编译文件后的输出打印文件的第一行,然后在下一行打印第一行和第二行,然后打印该计划的第一,第二和第三行.

我对这个应该如何工作的理解是程序将采用我的文件,FileReader和BufferedReader将把文件中的文本行作为字符串抓取,然后将它们放在ArrayList中,每个String位于不同的位置. ArrayList对不对?有人可以告诉我在while循环中哪里出错了吗?谢谢!

码:

public class ArrayListDemo

{
    public static void main (String[]args)
    {
    try
    {
        ArrayList<String> demo= new ArrayList <String>();
        FileReader fr= new FileReader("hi.tpl");
        BufferedReader reader= new BufferedReader(fr);
        String line;
        while ((line=reader.readLine()) !=null)
            {
            //Add to ArrayList
            demo.add(line);
            System.out.println(demo);
            }

        reader.close();
    }catch (Exception e)
        {
            System.out.println("Error: "+e.getMessage());
            System.exit(0);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

获得的输出:

cat
cat, rat
cat, rat, hat
Run Code Online (Sandbox Code Playgroud)

预期产量:

cat
rat
hat
Run Code Online (Sandbox Code Playgroud)

Dan*_*ker 5

这条线:

System.out.println(demo);
Run Code Online (Sandbox Code Playgroud)

应该:

System.out.println(line);
Run Code Online (Sandbox Code Playgroud)

然而,这将在一个循环中进行读取和打印.在构建数组的第一个循环之后,可能需要执行以下操作:

for (String line : demo) {
  System.out.println(line);
}
Run Code Online (Sandbox Code Playgroud)


wha*_*ley 5

您每次看到的输出是ArrayList.toString()打印到标准输出的结果.相反,在完成将文件内容读入ArrayList后循环遍历ArrayList:

    while ((line=reader.readLine()) !=null) {            
        //Add to ArrayList
        demo.add(line);            
    }
    reader.close();
    //do fun stuff with the demo ArrayList here
    for (String s : demo) { System.out.println(s); }
Run Code Online (Sandbox Code Playgroud)