7 回答

TA貢獻1854條經驗 獲得超8個贊
你可以這樣做:
package test;
public class Test2 {
public static void main(String[] args) throws Exception {
String number = "153004";
String sorted = sortStringNumbers(number);
System.out.println(sorted);
}
private static String sortStringNumbers(String numbersString) {
return numbersString.chars().mapToObj(c -> Character.toString((char)c)).sorted().collect(Collectors.joining());
}
}
輸出:
001345

TA貢獻1817條經驗 獲得超6個贊
您可以將您的 int 轉換為一個 String 并拆分成一個數組,接下來只需對流進行排序并加入一個 String。
String[] number = "190".split("");
String list = Stream.of(number).sorted().collect(Collectors.joining());
System.out.println(list); //Output: 019

TA貢獻1757條經驗 獲得超7個贊
您可以使用號碼的數字創建一個列表并對該列表進行排序。
List<Integer> nums=new ArrayList<>();
for(int num=toSort;num>0;num/=10){
nums.add(num%10);
}
Collections.sort(nums);
String result="";//If you want the result to be a integer (e.g. 190 will convert into 19 and not 019), change this to int result=0;
for(Integer num:nums){
result+=num.intValue();
/*int:
result+=num.intValue();
result×=10;*/
}

TA貢獻1808條經驗 獲得超4個贊
根據我對您問題的理解,您正在嘗試對 int 中的數字進行排序。這可以通過轉換為 CharArray、排序然后返回結果來完成。請注意,這對于負數將失敗。
fun sortInt(int: Int): Int = int.toString() .toCharArray() .sorted() .joinToString("") .toInt()
編輯:現在這也適用于 0 位數字。
fun sortInt(int: Int): String = int.toString() .toCharArray() .sorted() .joinToString("")

TA貢獻1843條經驗 獲得超7個贊
有很多方法可以實現這一目標。這是一個:
final String sorted = "190".chars()
.sorted()
.mapToObj(c -> Character.valueOf((char)c).toString())
.collect(Collectors.joining())
和
final String sorted = "190".chars()
.sorted()
.collect(StringBuilder::new, (sb, c) -> sb.append((char) c), StringBuilder::append)
.toString();
而且,作為將(我認為)在 Java 7 中工作的單行代碼(不是生產代碼,但很有趣)...
final String sorted = Arrays.toString(new PriorityQueue<>(Arrays.asList("190".split("")))
.toArray(new String[0]))
.replaceAll("\\W+", "");

TA貢獻1816條經驗 獲得超6個贊
List<Integer> nums = new ArrayList<>();
String total = "";
for( int num = 190; num>0; num/=10 ){
nums.add(num%10);
}
Collections.sort(nums);
for (Integer x : nums) {
total += x.toString();
}
Integer finalResult = Integer.parseInt(total);
Log.i(TAG,"=== finalResult "+ finalResult);
O/P : 019

TA貢獻1825條經驗 獲得超6個贊
如果你使用這個,你應該小心:
sortInt(190)
fun sortInt(int: Int): Int = int.toString() .toCharArray() .sorted() .joinToString("") .toInt()
輸出將是 19 而不是 019
添加回答
舉報