【发布时间】:2019-11-25 05:15:02
【问题描述】:
我是 Java 编码的新手,我的目标是从格式化为购物清单的 CSV 文件中获取数据,例如:
Item,Category,Amount,Price,Location
Apple,Food,12,$1,Walmart
Grape,Food,3,$1,Walmart
我必须将数据放入一个数组或 ArrayList 中,并将其作为购物清单输出,例如:
Item | Category | Amount | Price | Location
Apple | Food | 12 | $1 | Walmart
Grape | Food | 3 | $1 | Walmart
Subtotal: $15
每个空间中的所有项目都下降。 在每个类别的末尾,都有该类别中项目的小计。
到目前为止,我只处于可以从 CSV 文件中读取数据并将其作为第一个示例输出的阶段,我现在感觉很迷茫。
我能从这里得到一些帮助吗?
我现在的代码是:
public static void main(String[] args) {
String fileName = "Project2.csv";
File file = new File(fileName);
try {
Scanner inputStream = new Scanner(file);
while(inputStream.hasNext()) {
String data = inputStream.next();
System.out.println(data);
}
inputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
【问题讨论】:
-
与所有这些类型的任务一样,以 OOP 方式进行。也就是说,创建仅表示数据的专用类 (POJO)。给他们一个
public static Foo parseLine(String line)方法,然后用你读到的行来喂它。使用 NIO(从 Java 7 开始),读取和设置基本上是 1-3 行,超级简单。例如ShoppingCartItem类,然后您执行Files.lines(Paths.get("myFile.txt")).map(ShoppingCartItem::parseLine).collect(Collectors.toList())并且您有一个List<ShoppingCartItem> cart,您的购物车。完成。 -
您的代码中的一个大问题是您以令牌方式阅读。但是你需要保留分行。逐行阅读,然后拆分行。