簡體   English   中英

在兩個數組中查找匹配數字

[英]Finding matching numbers in two arrays

嘿,我正在嘗試編寫一種比較兩個數組並返回它們共有的值數量的方法。

例如,如果有兩個數組:

arr{0,4,2,5} 
arr1{0,7,4,4}

然后該方法將返回2。

這是我到目前為止的內容:

public int numDigitsCorrect(Permutation other) {
    int c=0;
    for(int i=0; i<nums.length; i++) {
        for(int x=0; x<nums.length;x++) {
            if(nums[i]==other.nums[x]) {
                System.out.println(nums[i] + " " + other.nums[x] + " ");               
                c++;
            }
        }
    }
    return c;
}

如果使用Set ,它將更加清晰和可讀。 同樣,這將減少代碼的復雜性。

喜歡:

import java.util.HashSet;
import java.util.Set;

public class NumberMatch {

    public static void main(String[] args) {
        int[] arrOne = { 0, 4, 2, 5 };
        int[] arrTwo = { 0, 7, 4, 4 };

        System.out.println(numDigitsCorrect(arrOne, arrTwo));
        System.out.println(numDigitsCorrect(arrTwo, arrOne));
        System.out.println(numDigitsCorrect(arrOne, arrOne));
        System.out.println(numDigitsCorrect(arrTwo, arrTwo));
    }

    public static int numDigitsCorrect(int[] arrOne, int[] arrTwo) {
        Set<Integer> setOne = arrayToSet(arrOne);
        Set<Integer> setTwo = arrayToSet(arrTwo);

        setOne.retainAll(setTwo);

        return setOne.size();
    }

    private static Set<Integer> arrayToSet(int[] array) {
        Set<Integer> retSet = new HashSet<Integer>();

        for (int i : array) {
            retSet.add(i);
        }
        return retSet;
    }
}

輸出:

2
2
4
3

您需要按如下所述更改當前功能:

public int numDigitsCorrect(Permutation other)  
{
    int c=0;
    for(int i=0; i<nums.length; i++) {
        for(int x=0; x<other.length;x++) {
           if(nums[i]==other[x]) {
               System.out.println(nums[i] + " " + other[x] + " ");               
               c++;
           }
       }
   }
   return c;
}

我假設numsother是您的int數組,如下所示

int[] nums = {0,4,2,5}; 
int[] other = {0,7,4,4};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM