對 double[] 進行升序排序,並將整數值(如 5.0)以 int 形式輸出,非整數保留原樣。
public static void orderNum(double[] n) {
// 冒泡排序:O(n²),教學用;生產請用 Arrays.sort()
for (int i = 0; i < n.length - 1; i++) {
for (int j = 0; j < n.length - 1 - i; j++) {
if (n[j] > n[j + 1]) {
double tmp = n[j];
n[j] = n[j + 1];
n[j + 1] = tmp;
}
}
}
// 輸出:整數值顯示為 int
for (double v : n) {
int intVal = (int) v;
if (v == intVal) System.out.println(intVal);
else System.out.println(v);
}
}
public static void main(String[] args) {
double[] arr = {9, 1.2, 5, 3.2, 1.1};
orderNum(arr);
}
輸出:
1.1 1.2 3.2 5 9
Arrays.sort(JDK 內建雙軸快排,O(n log n))Arrays.sort(arr);
Arrays.stream(arr)
.sorted()
.forEach(v -> System.out.println(v == (int)v ? (int)v : v));
DecimalFormat df = new DecimalFormat("#.##");
System.out.println(df.format(v));
v == (int)v 適用於精確整數值;若涉及運算誤差,建議 Math.abs(v - Math.round(v)) < 1e-9Arrays.sort 會改變原陣列,若需保留副本請先 clone()Arrays.parallelSort