java从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集“异或”)。
时间: 2024-06-13 09:03:42 浏览: 98
从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),合并两组整数,去掉在两组整数中都出现的整数,并按从大到小顺序排序输出(即两组整数集"异或
这道题目可以分为三个步骤来解决:
1. 从标准输入中读取两组整数,存储到两个数组中。
2. 找到两组整数的交集,即在两组整数中都出现的整数,并将其从两个数组中删除。
3. 将两个数组合并,并按从大到小顺序排序输出。
具体实现可以参考以下代码:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] a = new int[20];
int[] b = new int[20];
int aSize = 0, bSize = 0;
// 读取第一组整数
String[] line = sc.nextLine().split(" ");
for (String s : line) {
int num = Integer.parseInt(s);
if (aSize == 0 || Arrays.binarySearch(a, 0, aSize, num) < 0) {
a[aSize++] = num;
}
}
// 读取第二组整数
line = sc.nextLine().split(" ");
for (String s : line) {
int num = Integer.parseInt(s);
if (bSize == 0 || Arrays.binarySearch(b, 0, bSize, num) < 0) {
b[bSize++] = num;
}
}
// 找到两组整数的交集,并将其从两个数组中删除
for (int i = 0; i < aSize; i++) {
if (Arrays.binarySearch(b, 0, bSize, a[i]) >= 0) {
for (int j = i; j < aSize - 1; j++) {
a[j] = a[j + 1];
}
aSize--;
i--;
}
}
for (int i = 0; i < bSize; i++) {
if (Arrays.binarySearch(a, 0, aSize, b[i]) >= 0) {
for (int j = i; j < bSize - 1; j++) {
b[j] = b[j + 1];
}
bSize--;
i--;
}
}
// 合并两个数组,并按从大到小顺序排序输出
int[] c = new int[aSize + bSize];
System.arraycopy(a, 0, c, 0, aSize);
System.arraycopy(b, 0, c, aSize, bSize);
Arrays.sort(c);
for (int i = c.length - 1; i >= 0; i--) {
if (i == c.length - 1 || c[i] != c[i + 1]) {
System.out.print(c[i] + " ");
}
}
}
}
```
阅读全文