嘿我正在尝试编写一个比较两个数组的方法,并返回它们共有的值的数量。
例如,如果有两个数组:
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;
}
答案 0 :(得分:0)
如果您使用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
答案 1 :(得分:0)
您需要更改当前功能,如下所述:
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};