从键盘录入1行包含6个整数(整数可以重复)的字符串,前3个整数和后3个整数分别构成2个集合。编写程序,输出这两个集合的交集中的元素个数,用Java写
时间: 2024-10-19 11:02:46 浏览: 35
在Java中,你可以通过以下步骤实现这个功能:
1. 首先,创建一个方法来读取用户输入的一行字符串,并将其分割成两个部分,每部分包含三个整数。这里我们可以使用`Scanner`类来获取用户输入。
```java
import java.util.Scanner;
public String[] readIntegers(String input) {
Scanner scanner = new Scanner(input);
String[] parts = scanner.nextLine().split(" ");
return parts;
}
```
2. 然后,将这两部分字符串转换为Integer数组,方便后续操作。
```java
public int[] parseToIntArray(String[] parts) {
int[] integers = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
integers[i] = Integer.parseInt(parts[i]);
}
return integers;
}
```
3. 创建集合存储每个部分的整数。这里我们使用`HashSet`因为它们不包含重复元素,方便计算交集。
```java
import java.util.HashSet;
public HashSet<Integer> createSet(int[] numbers) {
HashSet<Integer> set = new HashSet<>();
for (int num : numbers) {
set.add(num);
}
return set;
}
// 分别处理前三个和后三个数字
HashSet<Integer> firstSet = createSet(Arrays.copyOfRange(numbers, 0, 3));
HashSet<Integer> secondSet = createSet(Arrays.copyOfRange(numbers, 3, 6));
```
4. 计算并返回两个集合的交集大小。
```java
public int intersectionSize(HashSet<Integer> set1, HashSet<Integer> set2) {
return set1.retainAll(set2); // 使用retainAll()方法保留set1中存在的set2中的所有元素
}
```
5. 最后,在主函数中调用上述方法,并输出结果。
```java
public static void main(String[] args) {
String input = "1 2 3 4 5 6"; // 用户输入示例
String[] parts = readIntegers(input);
int[] numbers = parseToIntArray(parts);
HashSet<Integer> result = intersectionSize(createSet(Arrays.copyOfRange(numbers, 0, 3)), createSet(Arrays.copyOfRange(numbers, 3, 6)));
System.out.println("交集中的元素个数: " + result.size());
}
```
运行这个程序,它会输出交集中的元素个数。如果你需要手动测试,替换`input`变量为你想输入的数据即可。
阅读全文