所以我有这个东西,我应该将文件中的信息存储到变量中,但我无法弄清楚如何做到这一点。截至目前,这就是我所拥有的:
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
有谁知道如何将单独的输出行存储到不同的变量中?我们的想法是,我们以后可以使用数字进行操作(乘以双数的整数等),因此将它们全部存储在单个变量中是行不通的。
答案 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(","));
}