用java输入多行数据,每行的第一个数字为n表示n个整数,当n=0时对输入的多行数据按照绝对值从大到小排序并输出
时间: 2024-01-21 21:15:57 浏览: 92
Java基础编程:输入n个数字,后排序
可以使用Scanner类来实现输入多行数据,然后将每行数据分割成整数数组进行处理。当n=0时,可以使用Arrays.sort()方法以绝对值为关键字进行排序,然后输出排序后的结果。
以下是示例代码:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<int[]> dataList = new ArrayList<>();
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();
}
dataList.add(nums);
}
dataList.sort((nums1, nums2) -> {
int absSum1 = Arrays.stream(nums1).map(Math::abs).sum();
int absSum2 = Arrays.stream(nums2).map(Math::abs).sum();
return Integer.compare(absSum2, absSum1);
});
for (int[] nums : dataList) {
Arrays.sort(nums, (num1, num2) -> Integer.compare(Math.abs(num2), Math.abs(num1)));
for (int num : nums) {
System.out.print(num + " ");
}
System.out.println();
}
}
}
```
输入样例:
```
5 1 -2 -3 4 -5
3 -4 2
0
```
输出样例:
```
-5 4 -3 -2 1
-4 2 -3
```
阅读全文