用Java实现:输入n(n《=100),按照绝对值从大到小排序后输出,题目保证对于每一个测试用例,所有数的绝对值都不相等。 输入格式:输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据结束,不作处理。 输出格式:对于每个测试用例,输出排序后的结果,两个数之间用一个空格隔开。每个测试用例占一行。 输入样例: 3 3 -4 2 4 0 1 2 -3 0 输出样例: -4 3 2 -3 2 1 0
时间: 2024-03-02 14:50:08 浏览: 62
好的,以下是Java代码实现:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int n = scanner.nextInt();
if (n == 0) break;
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = scanner.nextInt();
}
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int abs1 = Math.abs(o1);
int abs2 = Math.abs(o2);
if (abs1 != abs2) {
return abs2 - abs1;
} else {
return o2 - o1;
}
}
});
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println();
}
}
}
```
代码思路:
1. 使用Scanner读取输入数据,当n等于0时退出循环。
2. 创建一个长度为n的整型数组nums,用于存储输入的n个整数。
3. 调用Arrays.sort()方法对nums数组进行排序,排序规则为:按照绝对值从大到小排序,如果绝对值相等,则按照数值从大到小排序。
4. 遍历排序后的nums数组,依次输出每个整数,中间用空格隔开,最后换行。
阅读全文