2013-01-09 64 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