在不使用数组的情况下按降序排列数字内的数字

时间:2017-11-14 08:30:27

标签: java

我想在不使用数组的情况下按降序排列数字的数字。当我使用字符串时,它显示运行时错误。 例如:

Input: 2436
Output: 6432

我写了这段代码并且它给出了一个输出,但我得到的输出是错误的。第一个数字没有被打印。

public static void main (String[] args) throws java.lang.Exception {
    Scanner sc = new Scanner(System.in);
    int num,n,r=0,FinalNo=0;
    System.out.println("Enter any number");
    num=sc.nextInt();
    n=num;
    while(n>0) {
        r=n%10;
        n=n/10;
        FinalNo=(FinalNo*10)+r;
    }
    System.out.println("The number in descending order is "+FinalNo);
}

我是Java的初学者。我用过字符串但没有得到必要的答案。谁能告诉我这是什么问题以及我哪里出错了?

2 个答案:

答案 0 :(得分:1)

假设您的号码不大于Integer.MAX_VALUE,您可以使用Redix排序算法。它与O(n)的复杂性一起工作正常。在这里,您可以在以下代码中找到解决方案,它不使用任何数组或列表和字符串。

public static void main(String[] args) {
        int number = 45322;
        int sortedNumber = 0;

    /*
     * This loop checks for each digit starting from 9 to 0. 
     * In case of ascending order it should be 0 to 9.
     */
    for (int i = 9; i >= 0; i--) {
        int tmpNumber = number;
        while (tmpNumber > 0) {
            int digit = tmpNumber % 10;
            // Check for the greatest digit in the given number
            if (digit == i) {
                sortedNumber *= 10;
                sortedNumber += digit;
            }
            tmpNumber /= 10;
        }
    }
    System.out.println(sortedNumber); // prints 54322.
}

我认为这应该适合你。

答案 1 :(得分:-1)

您的示例会反转输入的值,但不会按降序对其进行排序。您不允许使用字符串或数组(学校作业?),但列表怎么样?

app.get('/products', (req, res) => {
const options = {
url: BASE_URL + '/products',
headers: {
  'Authorization': 'abcdefghghgh',
  'Accept': 'application/json'
}
};
   request.get(options).pipe(res);
})