我试图写作为输入2个整数数组和基于每个元件之间的二进制&对它们进行比较和考虑到如果一个阵列从另一来源的方法。数组的大小也是已知的并且相等。因此,基本上如果该方法将A = [2,0,0,0]和B = [6,0,0,3]作为输入,则它应该返回true,因为(2 &6)!= 0(小心如果它采用相反的A = [6,0,0,3]和B = [2,0,0,0],则它应该返回假,因为A是从B(或B包含在A中)。爪哇:两个阵列之间有二进制运算符比较
如果在位于相同位置的两个元素之间应用&运算符(即基本上该方法应该返回true),则数组中包含一个数组。
到目前为止,我已经得到了下面的代码,这显然是因为如果一个阵列从其他来源的它并没有考虑到不能正常工作。我所能想到的所有操作都是可交换的,并没有帮助。
private boolean checkContainment(int[] firstArr, int[] secondArr)
{
List<Integer> posList = new ArrayList<Integer>();
for(int i = 0;i < firstArr.length;i++)
{
if((firstArr[i] & secondArr[i]) != 0)
{
posList.add(i);
}
}
for(int j = 0;j < firstArr.length;j++)
{
if(posList.size() > 0)
{
for(int k : posList)
{
if((j != k) && (firstArr[j] != secondArr[j]))
{
return true;
}
}
}
}
return false;
}
我敢肯定,这是很简单的调整下面的代码,以获得正确的,但我不能让我的头周围。
*所以基本上如果该方法作为输入A = [2,0,0,0]和B = [6,0,0,3]它应该返回真,因为(2 6)!= 0(小心与括号这里hehe)*。为什么它应该返回'真实'?为什么它应该返回'false'? – 2014-08-27 13:03:45
你能否在这种情况下定义遏制和派生? – user2504380 2014-08-27 13:13:43
它应该返回true,因为(A [0]&B [0])== TRUE,否则当你有(B,A)作为参数时它应该返回FALSE,因为你可以从A派生B,因为B是A加Aka B衍生自A. – Hazerd 2014-08-27 13:27:36