我试图对BigDecimal数字进行排序。这是代码。
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
List<BigDecimal> hs = new ArrayList<BigDecimal>();
for (int i = 0; i < t; i++) {
BigDecimal b = scan.nextBigDecimal();
hs.add(b);
}
Collections.sort(hs, Collections.reverseOrder());
for (int i = 0; i < hs.size(); i++) {
System.out.println(hs.get(i));
}
}
它工作正常,但是当我提供这样的输入时。
5
50
.325
.324
-5
100
输出:
100
50
0.325
0.324
-5
我无法理解为什么.325会转换为0.325,我该如何删除?
答案 0 :(得分:1)
您可能应该使用@rgettman使用DecimalFormat
的解决方案,但这是可能的替代方案:
Collections.sort(hs, Collections.reverseOrder());
for (int i=0; i < hs.size(); i++) {
// conditionally remove a leading zero
String value = hs.get(i).toString().replaceFirst("^(-?)0\\.", "$1.");
System.out.println(value);
}