如何将文件中的文本存储到变量中?

时间:2013-06-09 19:35:09

标签: java string parsing variables

所以我有这个东西,我应该将文件中的信息存储到变量中,但我无法弄清楚如何做到这一点。截至目前,这就是我所拥有的:

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

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

3 个答案:

答案 0 :(得分:1)

这似乎是订单清单。因此,不要将它们存储在不同的变量 封装 中,而是将它们存储到Order对象中(在此处考虑OOP),方法是使用类似

的类
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(订单)中。 List似乎是个不错的选择。

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

答案 1 :(得分:0)

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

之类的东西
public class Item{
  private String ItemType; //Widget, Engine...
  private int Quantity;
  private double Price;
}

将它们放入List对象,例如

List<Item> itemsList = new ArrayList<Item>

希望得到这个帮助。

Cuong Vo

答案 2 :(得分:0)

将它们存储在ArrayList

List<String[]> lines = new ArrayList<>();
while(fileScanner.hasNextLine()) {
    lines.add(fileScanner.nextLine().split(","));
}