當我跑,我得到這樣的:計算陣列交匯的獨特元素的數量
運行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」 –