50,530
社区成员
发帖
与我相关
我的任务
分享
try {
BufferedReader reader = new BufferedReader(new FileReader("C:\\test.txt"));
String tmpStr=null;
BigDecimal allPrice=BigDecimal.ZERO;
HashMap<String,BigDecimal> typePriceMap=new HashMap<String,BigDecimal>();
while ((tmpStr=reader.readLine()) != null) {
String[] lineData = tmpStr.split(",");
//过滤不符合格式的
if (lineData.length<3) {
continue;
}
//单价
BigDecimal tmpPirce=null;
//数量
BigDecimal tmpNum=null;
//过滤 单价和数量 不是数字的
try {
tmpPirce=new BigDecimal(lineData[1]);
tmpNum=new BigDecimal(lineData[3]);
} catch (Exception e) {
continue;
}
//总价格累加
allPrice=allPrice.add(tmpPirce.multiply(tmpNum));
//分类价格汇总
if (typePriceMap.containsKey(lineData[2])) {
typePriceMap.put(lineData[2], typePriceMap.get(lineData[2]).add(tmpPirce.multiply(tmpNum)));
}else {
typePriceMap.put(lineData[2], tmpPirce.multiply(tmpNum));
}
}
List<Map.Entry<String,BigDecimal>> list = new ArrayList<Map.Entry<String,BigDecimal>>(typePriceMap.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,BigDecimal>>() {
//升序排序
public int compare(Entry<String, BigDecimal> o1,
Entry<String, BigDecimal> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
System.out.println("总价格:"+allPrice.toString());
//由低到高输入 分类 及 分类总价
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getKey()+":"+list.get(i).getValue());
}
} catch (Exception e) {
e.printStackTrace();
}