解法一:

import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        //通过字符串确定整数的位数
        String str = in.next();
        int num = str.length();
        int x = Integer.parseInt(str);
        int m,n;
        int count = 0;
        int[] a = new int[num];
        int i = 0;
        
        while(x != 0) {
            m = x % 10;
            if(m == 0) {
                //统计0的个数
                count++;
            }
            a[i++] = m;
            x = x / 10;
        }
        
        Arrays.sort(a);
        for(int j = 0; j < num; j++) {
            //将第一个非0数和a[0] 进行交换
            if(a[j] != 0) {
                int temp = a[j];
                a[j] = a[0];
                a[0] = temp;
                break;
            }
        }
        
        //输出
        for(int temp = 0; temp < num; temp++) {
            System.out.print(a[temp]);
        }    
    }
}

亮点: 当确定输入的数一定是整数时,可以通过字符串接收,然后使用字符串的 length() 函数确定其位数,然后视情况,是否使用 Integer.parseInt(String) 将字符串转换回整数。

 //通过字符串确定整数的位数
String str = in.next();
int num = str.length();
int x = Integer.parseInt(str);

解法二:

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String input = br.readLine().trim();
		
        //将字符串转换为字符数组
        char[] digits = input.toCharArray();
        Arrays.sort(digits); // 排序字符数组

        // 找到第一个非零字符的位置
        int firstNonZero = 0;
        while (firstNonZero < digits.length && digits[firstNonZero] == '0') {
            firstNonZero++;
            //firstNonZero 也正好表示0的个数
        }

        // 构造最小数
        StringBuilder result = new StringBuilder();
        if (firstNonZero < digits.length) {
            // 添加第一个非零字符
            result.append(digits[firstNonZero]);
            // 插入所有前导零
            //表示从0开始,插入firstNonZero个字符
            result.append(digits, 0, firstNonZero);
            // 添加剩余字符
            result.append(digits, firstNonZero + 1, digits.length - firstNonZero - 1);
        }

        System.out.println(result);
    }
}

盲点: Arrays.sort(digits); 可以对对字符数组、字符串数组等进行排序,而不是只能对数字数组进行排序。