So finden die doppelte Anzahl in einem Array in Java

May 7

Wenn Sie eine numerische Array in ein Java-Programm und es einen unerwünschten doppelten Wert enthält, müssen Sie es finden. Mit Loop-Strukturen, kann Ihr Code Ihre Array durchlaufen, prüfen jeden Wert darauf, ob es bereits aufgetreten ist und dass Sie wissen, wo das Duplikat ist. Durch die Einbettung eine Schleife in eine andere, kann Ihren Code jedes Element gegen frühere Artikel informieren. Gönnen Sie sich eine klare Verständnis des Prozesses durch das denken ganz durch was passiert, wenn der Code jedes Mal ausgeführt wird, Sie eine neue Kontrollstruktur hinzufügen.

Anweisungen

1 Erstellen Sie Ihre numerische Array. Wenn Sie nicht bereits eine Array in Ihrem Programm verfügen, können Sie im folgende Beispiel:

Int [] MyNums = {3, 5, 1, 6, 5, 8, 7};

Diese Zeile deklariert und instanziiert ein Array mit primitiven Typ Integer-Werte. Wie Sie sehen können, ist der doppelte Wert der Zahl fünf. Bereiten Sie zwei Variablen für die Speicherung der doppelten Zahlenwert und der Position sitzt es innerhalb des Arrays:

Int DupNum =-1;Int DupPos =-1;

Durch die Initialisierung auf minus eins, werden Sie in der Lage zu sagen, ob Ihr Prozess einen doppelten Wert im Array oder nicht findet.

2 Erstellen Sie eine Schleife mit Ihrem Array durchlaufen. Fügen Sie die folgende Schleife Gliederungsstruktur Ihr Programm:

für (Int i = 1; i < myNums.length; i++) {}Prozess-Inhalt hier}

Diese Schleife wird einmal für jedes Element in Ihrer numerischen Array durchlaufen. Innerhalb der Schleife können Sie den Prüfprozess zu implementieren, vergleichen jedes Element der vorherigen Elemente in der Struktur. Speichern Sie den aktuellen Wert in eine lokale Variable innerhalb der Schleife:Int CurrNum = MyNums [i];

Dieser Wert stellt die ganze Zahl an der aktuellen Position, wenn die Schleife durchläuft.

3 Erstellen Sie eine zweite Schleife innerhalb der ersten. Fügen Sie die folgende Schleife-Übersicht, nachdem Sie den aktuellen Wert in einer Variablen speichern:

für (Int j = 0; j < i; j++) {}Überprüfen Sie die vorherigen Werte}

Innerhalb dieser Schleife können Sie den aktuellen Wert für diejenigen, die an früheren Positionen im Array vergleichen. Auf diese Weise können Sie sagen, wenn der aktuelle Wert ein Duplikat ist.

4 Vergleichen Sie die aktuelle Zahl auf vorherigen Werte. Fügen Sie Ihre zweite for-Schleife die folgende bedingte Anweisung:

{if(currNum==myNums[j])}der Wert ist ein Duplikat}

Wenn dieser Test den Wert true zurückgibt, bedeutet dies, dass das aktuelle Arrayelement eine vorhergehende, mit seiner Position durch den zweiten Schleifenzähler entspricht. Innerhalb der bedingte If-Anweisung anzuweisen, dem Programm was tun, wenn es ein Duplikat stößt:

DupNum = CurrNum;DupPos = i;zu brechen;

Der Code legt die Werte die doppelte Anzahl und seine Position, so dass sie zugänglich sein werden, wenn die Schleife beendet. Gibt es keine weiteren Punkt für die Fortsetzung der Schleife zu diesem Zeitpunkt, also die Break-Anweisung es verhindert, dass weitere durchlaufen.

5 Die erste Schleife durchbrechen. Die Break-Anweisung bricht nur Code aus der nächsten Schleife. Dies bedeutet, dass die äußere Schleife weiterhin auch wenn Sie den doppelten Wert gefunden haben. Nach der schließenden Klammer für die innere Schleife, und fügen Sie die folgende bedingte Anweisung:

Wenn (DupNum > = 0) brechen;

Wenn das Duplikat nicht gefunden wurde, wird die äußere Schleife weiter ausgeführt werden. Sie können die folgende Test-Anweisung hinzufügen, nachdem Ihre äußere Schleife geschlossen:

System.out.println ("dupliziert Nummer:" + DupNum + ", Stellung:" + DupPos);

Wenn Ihr Code kein Duplikat gelegen hat, werden beide Variablen Werte von minus eins noch speichern.

Tipps & Warnungen

  • Eingebettete Schleifen können schwierig bei zunächst aufgrund der komplexen Ausführungsablauf beteiligt sein, aber sie können Sie Geschäftsprozesse präzise realisieren helfen.
  • Benötigen Sie mehr als ein Duplikat zu erkennen, müssen Sie könnte ein zweites Array zum Speichern dieser Werte zu erstellen.