[英]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;
}
我假設nums
和other
是您的int數組,如下所示
int[] nums = {0,4,2,5};
int[] other = {0,7,4,4};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.