题目:16、仓库新进了几批物资,只知道每批物资的数量和单价,请编写程序,按照每种物资的总价值,由高到低
次序输出。输入说明:第1行一个整数N,表明物资的批次数量第2-N+1行,每批物资的类别、数量級单
价,中间用空格隔开,其中类别用A- Z加以区分。输出说明: 按物资价值降序输出排序结果,每行输出一种物资。
输入样例:
5
A 5 10.00
B 3 2.00
A 5 8.00
B 3 2.50
C 10 3.50
输出样例:
A 90.00
C 35.00
B 13.50
直接上源码
import java.math.BigDecimal;
import java.math.BigInteger;
public class Pa {
String name;
BigInteger count;
BigDecimal price;
BigDecimal totalPrice;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BigInteger getCount() {
return count;
}
public void setCount(BigInteger count) {
this.count = count;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public BigDecimal getTotalPrice() {
return totalPrice;
}
public void setTotalPrice(BigDecimal totalPrice) {
this.totalPrice = totalPrice;
}
public Pa(String name, BigInteger count, BigDecimal price) {
this.name = name;
this.count = count;
this.price = price;
this.totalPrice = price.multiply(BigDecimal.valueOf(Long.parseLong(String.valueOf(count))));
}
}
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
Map<String, BigDecimal> paMap = getStringBigDecimalMap();
//将Map转换为List 用Value值排序
List<Map.Entry<String, BigDecimal>> list = new ArrayList<>(paMap.entrySet());
//对List进行排序,默认降序
list.sort((o1, o2) -> o2.getValue().compareTo(o1.getValue()));
//输出排序后的结果
list.forEach((entry) -> {
System.out.println(entry.getKey() + " " + entry.getValue());
});
}
private static Map<String, BigDecimal> getStringBigDecimalMap() {
Scanner sc = new Scanner(System.in);
BigInteger N = sc.nextBigInteger();
Map<String, BigDecimal> paMap = new HashMap<>();
for(BigInteger i = BigInteger.valueOf(1); i.compareTo(N) <= 0; i = i.add(BigInteger.ONE)) {
Pa p = new Pa(sc.next(),sc.nextBigInteger(),sc.nextBigDecimal());
if(paMap.containsKey(p.getName())){
paMap.put(p.getName(),paMap.get(p.getName()).add(p.getTotalPrice()));
}else{
paMap.put(p.getName(),p.getTotalPrice());
}
}
return paMap;
}
}
最后结果: