读取文本文件(字符串,数字,字符)到数据结构,1求所有商品价格,2计算不同类别的商品价格,比较不同类别商品高低进行排序

aysdlykl 2018-10-10 06:54:09
手机,2500,a,12 相机,8000,a,25 电脑,10000,a,36 冰箱,3000,b,35 空调,6000,b,58 (商品,价格,类别,数量)
...全文
282 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
枫舞蝶刺 2018-10-12
  • 打赏
  • 举报
回复
不知道你说的价格是指总价格还是什么
    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();
}
十八道胡同 2018-10-10
  • 打赏
  • 举报
回复
按行读取,然后读取的每行按照,分割字符串,然后转对应的数字到int

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧