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。我自己解决这个问题似乎没什么困难
# 1 楼答案
首先,给xArr和yArr一些随机数,然后用我们要比较的最大数组的大小初始化kArr,以确保数组有足够的空间来容纳相似的值
然后,在下一节中,我们在一个循环中进行一个循环,以相互比较这些值,如果它们相似,则使用k++并设置数组中的下一个值。这一直持续到循环完成,请注意,在比较所有值之前,根本不需要中断任何一个循环。在这一点上,循环会自行中断并继续执行下一位代码
最后一节只是创建一个与k大小相同的数组,并将值移到上面,我不知道您的研究要求,尽管在使用这样的原语时,您可能希望这样做,以防您有一个匹配的0作为数字。否则,将有大量0填充数组的空白
最后,我们只是对数组进行排序,以获得良好的度量值,并将其打印出来。 希望我已经回答了你的问题,你能从这篇文章中得到一些东西
# 2 楼答案
据我所知,问题是取两个数组,然后生成第三个数组,它是前两个数组的并集。两个集合的并集是两个集合中的值的子集
你的代码缺少一些大括号,所以把它们放回去。此外,在
ArrA[k]
中输入一个值之后,您也不想打印第k+1
项否则你就差不多在那儿了。
break
终止内循环,并允许外循环增加i
并继续。这是因为您已经找到了匹配项,无需继续搜索,只需移动到Xarr
中的下一个索引即可算法是这样的:对于X中的每个值,在Y中搜索匹配项。如果找到,将该值添加到A