2013-01-09 28 views
10

我有过两个数组一样,让我们​​说,我有适用的XOR:Java的异或超过两个数组

array_1: 1 0 1 0 1 1 
array_2: 1 0 0 1 0 1 

我想有一个接受两个数组和返回数组应用XOR功能, 所以在这种情况下,我想这个函数返回:

returned_array: 0 0 1 1 1 0 

请帮我一个算法..谢谢!

+1

你有什么这么远吗? – NPE

+3

这应该有助于你=> http://stackoverflow.com/questions/726652/creating-a-logical-exclusive-or-operator-in-java – cggaurav

+1

你有什么尝试?你有什么不同?这不是很明显,你需要帮助。我想你不想让我们为你写。 –

回答

18

如果你是在字节数组存储这些数据,使用这个简单的解决方案:

byte[] array_1 = new byte[] { 1, 0, 1, 0, 1, 1 }; 
byte[] array_2 = new byte[] { 1, 0, 0, 1, 0, 1 }; 

byte[] array_3 = new byte[6]; 

int i = 0; 
for (byte b : array_1) 
    array_3[i] = b^array_2[i++]; 

输出数组:

0 0 1 1 1 0 
+0

哇,什么意思b^array_2 [i ++]? b power array_2 [1]? – Ben

+1

@ user1843305没有。 ^是Java中的XOR运算符。 – Juvanis

+0

但整数我不会增加吗?如果这样做意味着你做了这样的事情:b^array_2 [1],并且i值变为1,那么你正在增加它并同时使用它? – Ben

0

这会是一个很好的解决方案呢? (我写这多亏你给我)

if(array1.length==array2.length){ 
    for(int i=0;i<array1.length;i++){ 

    output.add(logicalXOR(array1.get(i),array2.get(i))) 

    } 
} 

当然array1,2和输出会的ArrayList

+1

Java中没有logicalXOR()方法。 – zeeshan