我想在不使用数组的情况下按降序排列数字的数字。当我使用字符串时,它显示运行时错误。 例如:
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的初学者。我用过字符串但没有得到必要的答案。谁能告诉我这是什么问题以及我哪里出错了?
答案 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);
})