用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
时间: 2023-12-20 09:03:49 浏览: 31
可以使用Java自带的排序函数Arrays.sort()来实现绝对值从大到小排序的功能。具体实现步骤如下:
1. 读入一个整数n,如果n为0则结束程序。
2. 读入接下来的n个整数,存入一个长度为n的数组中。
3. 定义一个比较器Comparator,用于按照绝对值从大到小排序。
4. 调用Arrays.sort()函数进行排序。
5. 输出排好序的数组。
Java代码实现如下:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
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) {
return Math.abs(o2) - Math.abs(o1);
}
});
for (int i = 0; i < n; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
}
}
}
```
其中,Comparator的compare方法返回正数表示o2排在o1前面,负数表示o1排在o2前面。因此在本题中,我们需要按照绝对值从大到小排序,因此比较器的实现方式为Math.abs(o2) - Math.abs(o1)。