Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算数组交集中唯一元素的个数_Java - Fatal编程技术网

Java 计算数组交集中唯一元素的个数

Java 计算数组交集中唯一元素的个数,java,Java,当我跑步时,我会得到以下信息: 运行任务1问题1 2147483642 它应该返回'2',因为我试图在两个数组的交集中找到唯一元素的数量。请帮忙。 谢谢 公共类分配1问题1{ 公共静态void main(字符串[]args){ int[]a={1,3,2,3,5}; int[]b={1,3,4,1,7,3}; int n=5; int m=6; 系统输出打印(列表交叉点(a、b、n、m)); } 公共静态整数列表交叉点(整数[]a,整数[]b,整数n,整数m){ int i,j,k; int i

当我跑步时,我会得到以下信息:

运行任务1问题1

2147483642

它应该返回'2',因为我试图在两个数组的交集中找到唯一元素的数量。请帮忙。 谢谢

公共类分配1问题1{
公共静态void main(字符串[]args){
int[]a={1,3,2,3,5};
int[]b={1,3,4,1,7,3};
int n=5;
int m=6;
系统输出打印(列表交叉点(a、b、n、m));
}
公共静态整数列表交叉点(整数[]a,整数[]b,整数n,整数m){
int i,j,k;
int intersect=0;

对于(i=0;i您被困在无限循环中,因为您将m值增加为m++:

    if(duplicate == 1) {
                    for(k=0; k<m; k++) {
                        if(a[i] == b[k]) {
                            intersect = intersect + 1;
                        }
                    }
                }
if(重复==1){

对于(k=0;k如果你想让你的代码正常工作,你需要为循环修正
k
,在循环中你迭代
b
数组

            if(duplicate==1) {
                for(k=0; k<m; k++) { // increase k
                    if(a[i] == b[k]) {
                        intersect = intersect + 1;
                        break; // insert break to avoid duplicates in b array
                    }
                }
            }
if(重复==1){
对于(k=0;k
importjava.util.*;
公共类HelloWorld{
公共静态void main(字符串[]args){
int[]a={1,3,2,3,5};
int[]b={1,3,4,1,7,3};
设置aTmp=资产(a);
总资产(资产(b));
System.out.println(aTmp.size());
}
公共静态集合资产(int…args){
Set tmp=new HashSet();
for(int i:args){
tmp.add(i);
}
返回tmp;
}
}

为什么用
n
m
代替
a.length
b.length
?2147483642几乎是
int
的最大值(有符号)在Java中,
intersect=intersect+1
语句被反复执行,直到不能再递增为止。因此,这是有道理的。请尝试从内到外工作,调查这是什么原因造成的。在最后一个for循环中,您增加了“m”,必须增加“k”别忘了选择有用的答案,接受最好的答案。:)完整的打字错误…该死的。谢谢。我想写k++@user3245760似乎是的。尝试通过添加日志来发现问题。这是真的,我可以从j=1开始写,而不是从0开始,然后使条件重复==0。不,我想你是对的。我碰巧做了与你显示的相同的编辑。我的代码现在正确吗?哦,等等,这是真的,我们需要j=0当i大于0时与i进行比较。我应将其更改回j=0,如果(重复=1)?是,但返回
j=0
duplicate==1
    if(duplicate == 1) {
                    for(k=0; k<m; k++) {
                        if(a[i] == b[k]) {
                            intersect = intersect + 1;
                        }
                    }
                }
import java.util.HashSet;
import java.util.Set;

public class Del {
    public static void main(String[] args) {
        int[] a = { 1, 3, 2, 3, 5 };
        int[] b = { 1, 3, 4, 1, 7, 3 };

        // duplicates removed by SET
        Set intersect = new HashSet();

        for (int aVal : a) {
            for (int bVal : b) {
                if (aVal == bVal) {
                    intersect.add(aVal);
                    System.out.println("->" + aVal);
                }
            }
        }
        System.out.println("Size =" + intersect.size());
    }
}
            if(duplicate==1) {
                for(k=0; k<m; k++) { // increase k
                    if(a[i] == b[k]) {
                        intersect = intersect + 1;
                        break; // insert break to avoid duplicates in b array
                    }
                }
            }
public class assignment1question1 {

    public static void main(String[] args) {
        int[] a = {1,3,4,3,5};
        int[] b = {1,3,4,1,7,3};
        System.out.print(listIntersection(a,b));
    }

    public static int listIntersection(int[] a, int[] b) {
        int intersect = 0;

        for(int i = 0; i < a.length; i++) {
            boolean duplicate = false;

            for (int j = 0; j < i; j++) {
                if(a[i] == a[j]) {
                    duplicate = true;
                    break;
                }
            }

            if (!duplicate) {
                for(int k = 0; k < b.length; k++) {
                    if (a[i] == b[k]) {
                        intersect++;
                        break;
                    }
                }
            }
        }
        return intersect; 
    }
}
import java.util.*;

public class HelloWorld {

     public static void main(String []args) {
        int[] a = {1,3,2,3,5};
        int[] b = {1,3,4,1,7,3};
        Set<Integer> aTmp = asSet(a);
        aTmp.retainAll(asSet(b));
        System.out.println(aTmp.size());
     }

    public static Set<Integer> asSet(int... args) {
        Set<Integer> tmp = new HashSet<Integer>();
        for (int i : args) {
            tmp.add(i);
        }
        return tmp;
    }
}