当前位置: 首页 > 知识库问答 >
问题:

如何打印两个数组的交集并一次打印多个值?

贾兴学
2023-03-14

我现在的代码:

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        
        Scanner in = new Scanner(System.in);
        
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr1 = new int[n];
        int[] arr2 = new int[m];
        
        for(int i = 0; i < n; i++)
            arr1[i] = in.nextInt();
        
        for(int i = 0; i < m; i++) 
            arr2[i] = in.nextInt();
        
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                if(arr1[i] == arr2[j]) {
                    System.out.print(arr1[i] + " ");
                    break;
                }
            }
        }
    }
}

我希望它打印两个数组的交集,而不需要再次打印相同的数字。

E、 g:code>[1,2,2,1]和[2,2]的交点应该只打印一次,而不是像我现在的代码那样。

共有1个答案

楮阳
2023-03-14

你可以这样做:

import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        
        Scanner in = new Scanner(System.in);
        
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr1 = new int[n];
        int[] arr2 = new int[m];
        ArrayList<Integer> alreadyPrinted = new ArrayList<Integer>();
        for(int i = 0; i < n; i++)
            arr1[i] = in.nextInt();
        
        for(int i = 0; i < m; i++) 
            arr2[i] = in.nextInt();
        
        for(int i = 0; i < n; i++) {
            for(int j = 0; j < m; j++) {
                if(arr1[i] == arr2[j]) {
                    if(!alreadyPrinted.contains(arr1[i])){
                        alreadyPrinted.add(arr1[i]);
                        System.out.print(arr1[i] + " ");
                    }
                }
            }
        }
    }
}
 类似资料:
  • 我有两个2D数组,都是3x3。 或者更多地澄清一下我想做什么: 所以第一行是: 并对每一行进行相应的处理。

  • 问题内容: 例如,我有两个变量,以及如何仅使用一个变量而不将类型转换为来在单独的行中打印两个整数。(如在C ++以下:) 问题答案: 在python3中: 在python2中: …或者使用python3的打印 自从我的第一个答案以来,OP就使用可变类型更改来编辑问题。更新已更新问题的答案: 如果您有一些整数,即和: Python 3: Python 2: 要么 要么

  • 我在这里拥有的是一组三个数组列表。一个包含姓名、姓氏、uid和学位方案的学生数组列表。然后,我还有一个模块列表,每个模块还包含一个学生ID数组列表,用于在该特定模块上注册的学生。 我要做的是将学生的数组列表与用户ID的数组列表链接起来,这样程序就会查看ID,并将它们与包含所有学生详细信息的列表进行比较,然后编写一份包含完整学生详细信息和他们注册的模块的合并报告。 我的数组列表设置得很好,但是我很难

  • 有人能帮忙吗?选择2不起作用。当用户输入员工姓名时,它应该显示员工ID,但当用户输入姓名时,不会打印任何内容。代码没有错误。 //搜索员工数据公共静态无效搜索(string[]emplNames,int[]emplid){

  • 我有一个简短的问题 我有飞行、水上课程和动物课程 如果我只想打印出动物对象数组中的飞行物体 做这样的事安全吗 或 执行此操作并重写toString方法 我是java新手,所以我甚至不确定这两个是否正确。所以欢迎任何帮助 谢谢你的帮助 编辑- 对不起,模棱两可的问题这是我问题的一个例子 我可以做输出 = A.toString() 来获取对象字符串还是我必须做 并重写toString方法以打印出类和示

  • 是否有一种方法可以只使用一条打印语句,但仍能达到与下面代码中相同的效果?我尝试了在这种情况下无法使用的结束语句,或者我使用了错误的结束语句: