我正在创建一个文件列表
BufferedReader reader = new BufferedReader(
new InputStreamReader(new FileInputStream("H:/temp/data.csv")));
try {
List<Item> items = new ArrayList<Item>();
Item item = new Item();
String line = null;
while ((line = reader.readLine()) != null) {
String[] split = line.split(",");
item.name = split[0];
item.quantity = Integer.valueOf(split[1]);
item.price = Double.valueOf(split[2]);
item.total = item.quantity * item.price;
items.add(item);
}
for (Item item2 : items) {
System.out.println("Item: " + item2.name);
}
} catch (IOException e) {
reader.close();
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
问题是列表显示文件中的最后一行作为所有项的值.
Aru*_*hny 13
您的代码的问题是您只创建一个Item Object(Item item = new Item)实例,同一个实例一次又一次地添加到列表中.
您需要为Item文件中的每一行创建一个新实例,并将其添加到列表中,如下所示.
固定:
List<Item> items = new ArrayList<Item>();
String line = null;
while ((line = reader.readLine()) != null) {
String[] split = line.split(",");
Item item = new Item(); // New Item is created for every line
item.name = split[0];
item.quantity = Integer.valueOf(split[1]);
item.price = Double.valueOf(split[2]);
item.total = item.quantity * item.price;
items.add(item);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1379 次 |
| 最近记录: |