如何从文件中读取数据以创建对象?

时间:2015-10-28 01:59:07

标签: java file

我正在努力弄清楚如何从我们已经给出的文件中读取数据并使用它来创建对象的实例。我们获得了商店客户数据的txt文件。它采用以下格式: 123.64382392 12 1.1234123419

文件的每一行都是这样的。第一列是到达时间,第二列是项目数,第三列是客户找到一个项目所花费的时间。此文件中大约有100个客户,我不确定如何从文件中读取以创建所有必需的实例。



  public static void loadCustomers(){
        File file = new File("origCustomerArrivals.txt");
        try{
        Scanner input = new Scanner(file);
        while (input.hasNextLine())
        {
            double arrivalTime = input.nextDouble();
            int numItems = input.nextInt();
            double selectionTime= input.nextDouble();
            Customer newCustomer = new Customer(arrivalTime, numItems,selectionTime);
            
            input.nextLine();
        }
        input.close();
        }
        
        catch(FileNotFoundException e){
            System.out.println("file not opened");
        }
    }
}




2 个答案:

答案 0 :(得分:1)

试试这个:

public static void loadCustomers(){
    File file = new File("origCustomerArrivals.txt");
    try{
    List<Customer> list = new ArrayList<Customer>();
    Scanner input = new Scanner(file);
    while (input.hasNextLine())
    {
        String[] values = scan.nextLine().split("\\s+"); 
        arrivalTime = Double.parseDouble(values[0]);
        numItems = Integer.parseInt(values[1]); 
        selectionTime = Double.parseDouble(values[2]);

        Customer newCustomer = new Customer(arrivalTime, numItems,selectionTime);
        list.add(newCustomer);
        input.nextLine();
    }
    input.close();
    }

    catch(FileNotFoundException e){
        System.out.println("file not opened");
    }
}

}

答案 1 :(得分:0)

您能详细说明代码的哪些部分不起作用吗?我自己测试了它(打印出值而不是创建一个新的Customer对象),它工作正常。除了&#34; input.nextLine();&#34;在while循环中没有必要。它已经跳转到下一行,一旦到达文件末尾,可能会引发错误。

此外,一旦你创建了对象实例,我假设你想要将它保存到对象列表中。您可以通过在循环外创建对象Customer的ArrayList来执行此操作:

ArrayList<Customer> Customers = new ArrayList<Customer>();

然后,在循环中创建每个实例,将其添加到此ArrayList:

Customers.add(newCustomer);