当我跑,我得到这样的:计算阵列交汇的独特元素的数量
运行assignment1question1
应该回到“2”,因为我试图找到两个数组相交中唯一元素的数量。请帮忙。 谢谢。
public class assignment1question1 {
public static void main(String[] args) {
int[] a = {1,3,2,3,5};
int[] b = {1,3,4,1,7,3};
int n = 5;
int m = 6;
System.out.print(listIntersection(a,b,n,m));
}
public static int listIntersection (int[] a, int[] b, int n, int m) {
int i,j,k;
int intersect = 0;
for(i=0; i<n; i++) {
int duplicate = 0;
for(j=0; j<=i; j++) {
if(a[i] == a[j]) {
duplicate = duplicate + 1;
}
}
if(duplicate == 1) {
for(k=0; k<m; m++) {
if(a[i] == b[k]) {
intersect = intersect + 1;
}
}
}
}
return intersect;
}
}
这是我更新的代码:
public class assignment1question1 {
public static void main(String[] args) {
int[] a = {1,3,2,3,5};
int[] b = {1,3,4,1,7,3};
int n = a.length;
int m = b.length;
System.out.print(listIntersection(a,b,n,m));
}
public static int listIntersection (int[] a, int[] b, int n, int m) {
int i,j,k;
int intersect = 0;
for(i=0; i<n; i++) {
int duplicate = 0;
for(j=1; j<=i; j++) {
if(a[i] == a[j]) {
duplicate = duplicate + 1;
}
}
if(duplicate == 0) {
for(k=0; k<m; k++) {
if(a[i] == b[k]) {
intersect = intersect + 1;
break;
}
}
}
}
return intersect;
}
}
为什么你'N'和'M'而不是使用'a.length'和'b.length'? –
2147483642 *在Java中几乎是* int(它是带符号的)的最大值。所以有理由认为你的'intersect = intersect + 1'语句被重复执行,直到它不能再被增加。尝试从内到外调查什么会导致这种情况。 –
在最后一个for循环中,您正在增加“m”,必须增加“k” –