我有一个要求,即我将多个客户发票作为不同的文件。我可以从每个发票中读取客户名称和发票金额。要求是,对于一个客户,我应该将所有发票金额加起来。
这是我的代码:
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
请帮助我陷入困境。
答案 0 :(得分:1)
你必须以某种方式将金额字符串解析为某种数字类型,可能是BigDecimal。然后,当您读取值时,您可以将客户名称中的地图保留为当前总和,并持续更新。 只有在读完文件后,才会输出累计金额。
所以接下来的步骤应该是:
答案 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);