打印絕對排序的數組。請參閱示例輸出以進行說明。僅使用絕對值對數組進行排序並顯示實際值
輸入:
9 -2 10 3 -5 34 -22 7
我想輸出:
-2 3 -5 7 9 10 -22 34
我與Arrays.sort(a[]);
試圖請幫我:
謝謝
打印絕對排序的數組。請參閱示例輸出以進行說明。僅使用絕對值對數組進行排序並顯示實際值
輸入:
9 -2 10 3 -5 34 -22 7
我想輸出:
-2 3 -5 7 9 10 -22 34
我與Arrays.sort(a[]);
試圖請幫我:
謝謝
與Java 8中,您可以使用Lambda和Math.abs這樣的:
Integer[] array = {9,-2,10,3,-5,34,-22,7};
Arrays.sort(array, (a,b) -> (Integer.compare(Math.abs(a), Math.abs(b))));
Stream.of(array).forEach(a -> System.out.println(a));
感謝4castle的建議。或者使用比較
Arrays.sort(array, Comparator.comparingInt(Math::abs));
你可以得到數字的絕對值,那麼你可以做的排序
在Java
double f = Math.abs(-2);
給你值2然後你就可以進行排序。
好的謝謝..但做Math.abs(-2)後,我不能得到相同的輸出 –
使用sort
有一個額外的比較:
Arrays.sort(a, new AbsComparator());
比較本身看起來是這樣的:
class AbsComparator extends Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
return Math.abs(i1) < Math.abs(i2);
}
}
一個簡潔的方式來做到這一點是
Arrays.sort(array, Comparator.comparingInt(Math::abs));
例子。
輸入:[9,-2,10,3,-5,34,-22,7]
輸出:[-2,3,-5,7,9,10,-22 ,34]
Integer[] array = {9,-2,10,3,-5,34,-22,7}; Arrays.sort(array, Comparator.comparingInt(Math::abs)); System.out.println(Arrays.toString(array));
好的謝謝..但我得到不兼容的類型: –
我可以在這裏運行它,也許你的輸入數組不是整數,但雙打或什麼? –
'Math.abs()'可能會幫助你。 –
k謝謝..我如何寫邏輯@MuratK。 –