/ / Porovnanie dvoch polí v rámci samostatných 2D polí - java, rovná sa, multidimenzionálne pole, polia

Porovnanie dvoch polí v rámci samostatných 2D polí - java, rovná sa, multidimenzionálne pole, pole

Mám dve samostatné 2D súbory. Každý z nich obsahuje menšie súbory, ktoré sú dvojicami hodnôt int. Prvé 2D pole je vstupná informácia, druhé 2D pole obsahuje hodnoty, ktoré sa majú porovnávať alebo vyhľadávať proti.

Napríklad vstupné pole I je:

{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}

Druhé, referenčné pole sú všetky možné kombinácie hodnôt od prvého:

{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}

Chcem zobrať vstup a určiť, čisubarray i sa rovná ktorejkoľvek z referenčných podsúborov. Chcem, aby boli výsledky v jednorozmernom poli rovnakej veľkosti ako referencia s počtom početov, kedy bol každý subarray nájdený vo vstupnom poli. Takže výsledné pole by malo vyzerať takto:

{0, 2, 1, 1, 0, 0, 0, 1, 0}

Toto je môj pokus o kód:

int[] ResultArray = new int[ReferenceArray.Length];

for (int i = 0; i < ReferenceArray.Length; i++)
{
for (int j = 0; j < InputArray.length; j++)
{
if (InputArray[j] == RefereenceArray[i])
ResultArray[i]++;
}
}

Z nejakého dôvodu sa to kompiluje, ale v ResultArray sa nič neposkytuje. Keď som sa pokúsil použiť

Arrays.equal(InputArray[j], ReferenceArray[i])

namiesto toho sa mi pri kompilácii vyskytla chyba. Máte nejakú predstavu, čo sa pokazilo? Mal som podobný blok kódu, ktorý fungoval dobre a nemôžem zistiť, aký problém tu je.

odpovede:

4 pre odpoveď č. 1

== (na Object typ) vždy testuje referenčnú identitu. Môžeš použiť Arrays.deepEquals(Object[], Object[]) tým, že ich zmeníte

if (InputArray[j] == RefereenceArray[i])

na niečo ako

if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))