1

所以我有这个东西,我应该将文件中的信息存储到变量中,但我不知道如何做到这一点。到目前为止,这就是我所拥有的:

while(fileScanner.hasNextLine())
{
  String line = fileScanner.nextLine();
  String [] array = line.split(",");
  for (int i = 0; i < array.length; i++)
  {
    System.out.println(array[i]);
  }
}

产生以下输出:

Item
Quantity
Price
Widget
273
12.99
Engine
3
3490.33
Flux Capacitor
1
29.99
Justin Bieber Bobbleheads
488
19.24

有谁知道我如何将单独的输出行存储到不同的变量中?这个想法是我们以后可以对数字进行操作(将整数乘以双精度数等),因此将它们全部存储在单个变量中是行不通的。

4

3 回答 3

1

这似乎是一个订单列表。因此,与其将它们存储在不同的变量中,Order不如通过使用类似

public class Order {
    private String itemName;
    private int quantity;
    private double price;

    public Order(String itemName, int quantity, double price) {
        this.itemName = itemName;
        this.quantity = quantity;
        this.price = price;
    }

    // constructor overloading to help instantiate from Strings
    public Order(String itemName, String quantity, String price) {
        this (itemName, Integer.parseInt(quantity), Double.parseDouble(price));
    }

    // getters/setters

    @Override
    public String toString() { // to print Order values to console easily
        return "{item = " + itemName +
            ", quantity = " + quantity +
            ", price = " + price + "}";
    }

}

现在,只需在解析文件时填充对象实例Order(认为一行 = 一个Order对象),然后将它们添加到Collection(订单)中。AList似乎是一个不错的选择。

List<Order> listOfOrders = new ArrayList<Order>();
while(fileScanner.hasNextLine())
{
  String line = fileScanner.nextLine();
  String [] array = line.split(",");
  for (int i = 0; i < array.length; i++)
  {
    // instantiate; initialize with passed params; add to list
    listOfOrders.add(new Order(array[0], array[1], array[2]));
  }
}
System.out.println(listOfOrders); // would use Order.toString()
于 2013-06-09T20:38:23.940 回答
0

据我了解您的要求,您必须使用 OOP。就像是

public class Item{
  private String ItemType; //Widget, Engine...
  private int Quantity;
  private double Price;
}

将它们放入 List 对象中,例如

List<Item> itemsList = new ArrayList<Item>

希望这有帮助。

强武

于 2013-06-09T19:43:05.330 回答
0

将它们存储在ArrayList

List<String[]> lines = new ArrayList<>();
while(fileScanner.hasNextLine()) {
    lines.add(fileScanner.nextLine().split(","));
}
于 2013-06-09T19:44:28.427 回答