題目描述
Java的BigDecimal可以處理任意精度的有號十進位數。來測試看看你對它有多熟悉吧!
原題網址
輸入格式
第一行包含一個整數n,為數字的數量,最多為200。接下來的n行,每行都是一個實數數字,最多有300位。
輸出格式
輸出n個數字遞減排序後的結果。
範例輸入
9
-100
50
0
56.6
90
0.12
.12
02.34
000.000
-100
50
0
56.6
90
0.12
.12
02.34
000.000
範例輸出
90
56.6
50
02.34
0.12
.12
0
000.000
-100
56.6
50
02.34
0.12
.12
0
000.000
-100
解題概念
建立出n個BigDecimal物件,並將它們儲存成陣列。接著可以使用Arrays類別提供的sort方法,並實作Comparator介面的compare方法來對這個陣列進行排序。
最後再輸出陣列排序後的結果即可。
參考答案
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
public static void main(final String[] args) {
final Scanner sc = new Scanner(System.in);
final int n = sc.nextInt();
final String[] s = new String[n];
for (int i = 0; i < n; ++i) {
s[i] = sc.next();
}
Arrays.sort(s, (a,b) -> {
final BigDecimal bigA = new BigDecimal(a);
final BigDecimal bigB = new BigDecimal(b);
return -bigA.compareTo(bigB);
});
for (int i = 0; i < n; ++i) {
System.out.println(s[i]);
}
}
}