Ich habe zwei separate 2D-Arrays. Jedes enthält kleinere Arrays, die Paare von int-Werten sind. Das erste 2D-Array ist die Eingabeinformation, das andere 2D-Array enthält Werte, nach denen gesucht oder gesucht werden soll.
Zum Beispiel lautet das Eingabefeld:
{{0, 1}, {0, 2}, {2, 1}, {1, 0}, {0,1}}
Das zweite Referenzfeld enthält alle möglichen Wertekombinationen aus dem ersten:
{{0, 0}, {0,1}, {0,2}, {1, 0}, {1, 1}, {1, 2}, {2, 0}, {2, 1}, {2, 2}}
Ich möchte die Eingabe nehmen und feststellen, obSubarray i ist gleich einem der Referenz-Subarrays. Ich möchte, dass die Ergebnisse in einem eindimensionalen Array von derselben Größe wie die Referenz sind, mit einer Zählung für die Anzahl, wie oft jedes Subarray im Eingabefeld gefunden wurde. Das resultierende Array sollte also so aussehen:
{0, 2, 1, 1, 0, 0, 0, 1, 0}
Dies ist mein Versuch am Code:
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]++;
}
}
Aus irgendeinem Grund wird dies kompiliert, aber zu ResultArray wird nichts hinzugefügt. Als ich versuchte zu benutzen
Arrays.equal(InputArray[j], ReferenceArray[i])
Stattdessen bekomme ich einen Fehler beim Kompilieren. Irgendeine Idee, was ist schief gelaufen? Ich hatte einen ähnlichen Codeblock, der gut funktioniert hat, und kann nicht herausfinden, wo das Problem liegt.
Antworten:
4 für die Antwort № 1==
(auf einem Object
type) testet immer die Referenzidentität. Sie können verwenden Arrays.deepEquals(Object[], Object[])
indem Sie dies ändern
if (InputArray[j] == RefereenceArray[i])
zu etwas wie
if (Arrays.deepEquals(InputArray[j], RefereenceArray[i]))