为了账号安全,请及时绑定邮箱和手机立即绑定

下一个最大的数字

下一个最大的数字

米琪卡哇伊 2022-12-28 11:11:01
我试图从用户输入中找到下一个最大的数字。如果用户给出 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]);  } }}
查看完整描述

4 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

package com.demo;


import java.util.Arrays;

import java.util.Scanner;


public class Demo {


    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=null;

      String numStr=in.next();

      int num= Integer.valueOf(numStr);

      if(numStr.startsWith("0")) {

          chars= ("0" + num).toCharArray();

      }else {

          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]);

     }

    }

}


查看完整回答
反对 回复 2022-12-28
?
侃侃尔雅

TA贡献1801条经验 获得超15个赞

在您的main()中,仅将输入作为字符串,而不是将其作为整数。 String num=in.next();



查看完整回答
反对 回复 2022-12-28
?
当年话下

TA贡献1890条经验 获得超9个赞

您正在以整数形式从标准输入中读取数字。尝试将它们读作字符串:


   Scanner in = new Scanner(System.in);

   String num = in.nextLine();

   char[] chars = num.toCharArray();


查看完整回答
反对 回复 2022-12-28
?
MMTTMM

TA贡献1869条经验 获得超4个赞

public static int findNextGreatestNumber(int[] arr, int k) {

    int delta = Integer.MAX_VALUE;

    int res = 0;


    for (int a : arr) {

        if (a - k > 0 && a - k < delta) {

            delta = a - k;

            res = a;

        }

    }


    return delta == Integer.MAX_VALUE ? k : res;

}


查看完整回答
反对 回复 2022-12-28
  • 4 回答
  • 0 关注
  • 100 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信