有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从一个数组中获取数据以创建另一个数组。这个循环怎么了?

我正在做一个任务,我需要创建两个数组,然后查看它们并创建一个新数组,其中包含前两个数组中的任何值。最初,我通过制作arraylist接近完成这一点,但我的实验室教授告诉我这是不允许的,所以我需要重新开始,没有足够的时间找出解决方案

如果你想看看我现在的全部代码:http://pastebin.com/thsYnj2z

在这里,我真的在与这个循环作斗争:

for(int i = 0 ; i < Xarr.length ; i++){
    for(int j = 0 ; j < Yarr.length ; j++)
        //Compare. If the two are the same, they go inside of A.
        if (Xarr[i] == Yarr[j]){
        ArrA[k] = Xarr[i]; 
        k++;
        System.out.println(ArrA[k]);
        break;
}

我的ArrA[k]数组的输出仍为0。我自己解决这个问题似乎没什么困难


共 (2) 个答案

  1. # 1 楼答案

    public static void main(String... args){
        int[] xArr = {1, 1,1,1,1,1};
        int[] yArr = {1, };
        int[] kArr = new int[xArr.length > yArr.length ? xArr.length : yArr.length];
    
    
        int k = 0;
        for(int x = 0; x < xArr.length; x++){
            for(int y = 0; y < yArr.length; y ++){
                int xNum = xArr[x];
                int yNum = yArr[y];
                if(xNum == yNum) kArr[k++] = xNum;
            }
        }
    
        int[] resizedKArr = new int[k];
        for(int i = 0; i < resizedKArr.length; i++) resizedKArr[i] = kArr[i];
        Arrays.sort(resizedKArr);
    
        for(int x : resizedKArr) System.out.println(x);
    }
    

    首先,给xArr和yArr一些随机数,然后用我们要比较的最大数组的大小初始化kArr,以确保数组有足够的空间来容纳相似的值

    然后,在下一节中,我们在一个循环中进行一个循环,以相互比较这些值,如果它们相似,则使用k++并设置数组中的下一个值。这一直持续到循环完成,请注意,在比较所有值之前,根本不需要中断任何一个循环。在这一点上,循环会自行中断并继续执行下一位代码

    最后一节只是创建一个与k大小相同的数组,并将值移到上面,我不知道您的研究要求,尽管在使用这样的原语时,您可能希望这样做,以防您有一个匹配的0作为数字。否则,将有大量0填充数组的空白

    最后,我们只是对数组进行排序,以获得良好的度量值,并将其打印出来。 希望我已经回答了你的问题,你能从这篇文章中得到一些东西

  2. # 2 楼答案

    据我所知,问题是取两个数组,然后生成第三个数组,它是前两个数组的并集。两个集合的并集是两个集合中的值的子集

    你的代码缺少一些大括号,所以把它们放回去。此外,在ArrA[k]中输入一个值之后,您也不想打印第k+1

    否则你就差不多在那儿了。break终止内循环,并允许外循环增加i并继续。这是因为您已经找到了匹配项,无需继续搜索,只需移动到Xarr中的下一个索引即可

    算法是这样的:对于X中的每个值,在Y中搜索匹配项。如果找到,将该值添加到A

    for(int i = 0 ; i < Xarr.length ; i++) {
        for(int j = 0 ; j < Yarr.length ; j++) {
            //Compare. If the two are the same, they go inside of A.
            if (Xarr[i] == Yarr[j]){
                ArrA[k] = Xarr[i]; 
                System.out.println(ArrA[k]);
                k++; //you probably want to increment k after you add to ArrA, not before
                break;
            }
        }
    }