題目描述

Java的BigDecimal可以處理任意精度的有號十進位數。來測試看看你對它有多熟悉吧!



原題網址

輸入格式

第一行包含一個整數n,為數字的數量,最多為200。接下來的n行,每行都是一個實數數字,最多有300位。

輸出格式

輸出n個數字遞減排序後的結果。

範例輸入

9
-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

解題概念

建立出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]);
        }
    }
}