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

出力の個別の行を異なる変数に保存する方法を知っている人はいますか? アイデアは、後で数値を使用して操作を実行できるようにすることです (整数を double で乗算するなど)。そのため、それらすべてを単一の変数に格納することはできません。

4

3 に答える 3

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し (1 行 = 1 つのオブジェクトと考えてください)、それらを(注文の)Orderに追加します。CollectionAListが良い選択のようです。

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 に答える