我试图从用户输入中找到下一个最大的数字。如果用户给出 23,它显示输出为 32。如果有更大的数字,那么它必须打印相同的给定数字。但是如果用户给出 03显示 3 但它必须显示 30。因为它需要 03 作为八进制数。我如何更改代码以将正确的输出显示为 30?
public class Main
{
static void swap(char ar[], int i, int j)
{
char temp = ar[i];
ar[i] = ar[j];
ar[j] = temp;
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int num = in .nextInt();
char[] chars = ("" + num).toCharArray();
int i;
int n = chars.length;
for (i = n - 1; i > 0; i--)
{
if (chars[i] > chars[i - 1])
break;
}
if (i == 0)
System.out.println(num);
else {
int x = chars[i - 1], min = i;
for (int j = i + 1; j<n; j++)
{
if (chars[j] > x && chars[j]<chars[min])
min = j;
}
swap(chars, i - 1, min);
Arrays.sort(chars, i, n);
for (i = 0; i<n; i++)
System.out.print(chars[i]);
}
}
}
LEATH
侃侃尔雅
当年话下
MMTTMM
相关分类