任务描述:
现给出两个数组,每个数组都有10个元素,请求两个数组的交集,如交集为空,请输出 NULL,否则输出交集元素(数组元素取值范围0~1000)。
任务要求:
代码示例:
/*** 计算两个数组的交集。* 该程序首先通过用户输入创建两个整数数组,然后找出这两个数组中相同的元素,* 并将这些相同的元素存储到一个新的数组中,最后打印出这个新数组(即两个数组的交集)。*/
package April_2024;import java.util.Scanner;public class a240421_2 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);// 输入第一个数组的元素System.out.println("第一个数组元素:");int[] arr1 = new int[10];for (int i = 0; i < 10; i++) {arr1[i] = sc.nextInt();}// 输入第二个数组的元素System.out.println("第二个数组元素:");int[] arr2 = new int[10];for (int i = 0; i < 10; i++) {arr2[i] = sc.nextInt();}// 寻找arr1和arr2中相同的元素,并存储到arr3中(保证不重复)int[] arr3 = new int[10];boolean[] foundInArr2 = new boolean[10]; // 用于标记arr2中是否已出现过某个元素for (int i = 0; i < 10; i++) {if (!foundInArr2[arr1[i]]) { // 检查arr1[i]是否已存在于arr2中for (int j = 0; j < 10; j++) {if (arr1[i] == arr2[j]) {arr3[i] = arr1[i];foundInArr2[arr1[i]] = true; // 标记arr2中已出现arr1[i]break; // 找到匹配后即跳出内层循环}}}}// 打印arr3中的元素,即为arr1和arr2的交集(无需去重,因为arr3本身已无重复元素)System.out.println("交集:");for (int i = 0; i < 10; i++) {if (arr3[i] != 0) {System.out.print(arr3[i] + " ");}}}
}
交集去重逻辑: