亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

下一個最大的數字

下一個最大的數字

米琪卡哇伊 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條經驗 獲得超7個贊

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條經驗 獲得超16個贊

在您的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 關注
  • 162 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號