为同一客户添加不同文件中的数字

时间:2014-02-21 07:08:41

标签: java file io

我有一个要求,即我将多个客户发票作为不同的文件。我可以从每个发票中读取客户名称和发票金额。要求是,对于一个客户,我应该将所有发票金额加起来。

这是我的代码:

String[] filenames1 = laf.splitFileNames();
FileInputStream fs;
BufferedReader br;
String line;
for (String filename1 : filenames1) {
    fs = new FileInputStream(outFolder + filename1);
    br = new BufferedReader(new InputStreamReader(fs));
    for (int m = 0; m < 1; m++) {
        br.readLine();
    }
    line = br.readLine().trim();
    String cust_name = line.substring(12);//Returns the Customer Name
    String amount = rll.lastNonBlankLine(new File(outFolder + filename1));//Returns Invoice Amount in String format
    System.out.println(cust_name + "-" + rll.lastNonBlankLine(new File(outFolder + filename1)));
}

我的出局:

TAITA TAVETA TEACHERS SACCO-25,101.53
TAITA TAVETA TEACHERS SACCO-12,927.62
TAITA TAVETA TEACHERS SACCO-12,927.62
NOT FOR CUSTOMER-12,927.62

理想情况下,我应该能够得到:

TAITA TAVETA TEACHERS SACCO-50,956.77
NOT FOR CUSTOMER-12,927.62

请帮助我陷入困境。

2 个答案:

答案 0 :(得分:1)

你必须以某种方式将金额字符串解析为某种数字类型,可能是BigDecimal。然后,当您读取值时,您可以将客户名称中的地图保留为当前总和,并持续更新。 只有在读完文件后,才会输出累计金额。

所以接下来的步骤应该是:

  • 查找BigDecimal的参考文档,寻找解析它们的方法。
  • 查看Map的参考文档,了解它们的工作原理以及它们对您的帮助。

答案 1 :(得分:0)

我真的不认为这是否真的有用,我应该说,你的问题可能是以String格式返回发票金额时,你这样做:

String amount = rll.lastNonBlankLine(new File(outFolder + filename1));

但是当您打印它时,您将获得另一个发票金额:

System.out.println(cust_name + "-" + rll.lastNonBlankLine(new File(outFolder + filename1)));

我认为你必须做类似的事情:

System.out.println(cust_name + "-" + amount);