首页 > 解决方案 > 在两个数组中查找重复数字

问题描述

我被要求制作一个可以在两个数组中找到重复数字的程序。我已经想出了如何打印出重复的数字,但是我在让它们打印出只有一个重复的数字时遇到了问题。IE;

int[] array1 = new int[2,4,6,8,10,12,14,16,18,20]
int[] array1 = new int[2,4,6,8,10,10,6,7,20,20]

输出:

2, 4, 6, 8, 10, 10, 6, 20, 20

我怎样才能让它只输出一个20和一个10

import java.security.SecureRandom;

public class Duplicates 
{

    public static void main(String []args)
    {
        int[] array1 = new int[10];
        int[] array2 = new int[10];

        SecureRandom randomNumbers = new SecureRandom();

        for(int i = 0; i < array1.length; i++)
        {
            array1[i] = randomNumbers.nextInt(19);
        }
        for(int i = 0; i < array2.length; i++)
        {
            array2[i] = randomNumbers.nextInt(19);
        }
        System.out.printf("Array 1: ");
        for(int i: array1)
        {
            System.out.print(i + ",");
        }
        System.out.println();

        System.out.printf("Array 2: ");

        for(int i: array2)
        {
            System.out.print(i + ",");
        }

        System.out.println("\nValues the exist in both arrays are... ");

        for(int i = 0; i < array1.length;i++)
        {
            for(int j = 0; j < array2.length; j++)
            {
                if(array1[i]==array2[j])
                {
                    System.out.printf(array1[i] + ",");
                }
            }
        }
    }
}

标签: javaarrays

解决方案


您需要一种记录哪些数字已被识别为重复的方法。

我建议:创建一个新集合,例如 HashSet,并向其中添加重复值而不是打印它们。浏览完原始数组中的所有值后,打印副本集合中的任何内容。


推荐阅读