Java - 读取文本文件,在ArrayList中存储内容,打印ArrayList

时间:2014-12-04 23:18:04

标签: java file-io arraylist

我必须编写一个程序:

  1. 提示用户输入文件的名称
  2. 从输入文件中读取数据,并将有关汽车的信息存储在Car对象的数组列表中,
  3. 将未排序的数据从数组列表打印到屏幕,如下所示:
  4. Enter the name of the input file -> carlot.txt
    
    The Unsorted Array List of Cars
    
    [Honda, Prelude, 1998] 
    [Honda, Accord, 1998]
    [Honda, Ridgeline, 2006]
    [Ford, Taurus, 1996]
    [Mitsubishi, Eclipse, 1996]
    [Mitsubishi, Galant, 2015]
    [Ford, Fusion, 2010]
    [Mazda, Protege 5, 2003]
    [Mazda, Protege 5, 2002]
    [Isuzu, Trooper, 2002]
    

    我无法弄清楚如何执行前三个步骤。

    我的代码:

    package carsorter;
    import java.util.*;
    import java.io.*;
    
    public class CarSorter 
    {
        public static void main(String[] args) 
        {
            try 
            {
                String userFileName;
                Scanner in = new Scanner(System.in);
                System.out.print("Enter the name of the input file - > ");
                userFileName = in.next();
                System.out.println();
    
                Scanner file = new Scanner(new File(userFileName));
                ArrayList<Car> list1 = new ArrayList<>();
                while (file.hasNext()) 
                {
                    list1.add(new Car(file.nextInt(), file.next(), file.next()));
                }
                Car[] list2 = list1.toArray(new Car[list1.size()]);
                System.out.println("The Unsorted Array List of Cars");
                int i;
                for (i=0; i < list1.size(); i++) 
                {
                    System.out.println(list1.get(i));
                }
                System.out.println();
    
            } 
            catch (IOException e) 
            {
                System.out.println(e);
            }
        }
    
    }
    

    在编译程序时,即使我刚刚创建了文件并将其保存到我的计算机中,它也为我提供了文件未找到异常。

    我还有两个与这个项目一起使用的类,如果需要/想要它们会添加它们。因此,基本上只需要帮助找出如何从用户读取文本文件,将文本文件的内容添加到ArrayList,并以格式化方式打印出ArrayList的内容(我有一个toString()方法我的课程。)

1 个答案:

答案 0 :(得分:0)

我想你只输入你想要阅读的文件的名称(Ej.foo.txt)。如果是这种情况,则不应将其原样传递给new File()构造函数,因为该构造函数需要绝对路径(或相对于正在执行的JVM的路径),因此您应该输入完整绝对值文件路径跟随提示中的文件名(Ej ./home/user/foo.txt或c:\ documents \ foo.txt)。

如果不是这种情况,您首先应将提示中输入的路径打印到变量userFileName中,以查看路径是否正确。

我建议您在使用路径创建File实例后,检查它是否存在以及是否可以通过其exists()canRead()实例方法读取它。