Hvordan finne den Duplisert nummer på en Array i Java

Hvordan finne den Duplisert nummer på en Array i Java


Hvis du har en numerisk array i et Java-program, og det inneholder en uønsket duplikat verdi, kan det hende du trenger for å finne den. Ved hjelp av loop-strukturene, kan koden iterere gjennom array, sjekker hver verdi for å se om det allerede har skjedd, og fortelle deg hvor duplikat er. Ved å bygge en sløyfe inne i et annet, kan koden din sjekke hvert element mot tidligere elementer. Gi deg selv en klar forståelse av prosessen ved å tenke hele veien gjennom hva som vil skje når koden utfører hver gang du legger til en ny styringsstruktur.

Bruksanvisning

1 Lag din numerisk array. Hvis du ikke allerede har en rekke utvalg i programmet, kan du bruke følgende eksempel:

int [] myNums = {3, 5, 1, 6, 5, 8, 7};

Denne linjen erklærer og instantiates en matrise med primitive typen heltall. Som du kan se, er det dupliserte verdi nummer fem. Forbered to variabler for å lagre duplisert tallverdi og den posisjonen den sitter på i matrisen:

int dupNum = 1;
int dupPos = 1;

Ved initialisering disse til negativ en, vil du være i stand til å fortelle om prosessen finner en duplikat verdien i matrisen eller ikke.

2 Lag en løkke for å iterere gjennom array. Legg til følgende løkke ytre struktur til programmet:

for (int i = 1; i <myNums.length; i ++) {
// prosess innholdet her
}

Denne sløyfen vil reagere en gang for hvert element i numerisk array. Inne i loop, kan du gjennomføre kontroll av prosessen, sammenligne hvert element til forrige elementene i strukturen. Lagre den aktuelle tallverdi i en lokal variabel inne sløyfe:
int currNum = myNums [i];

Denne verdien representerer heltall i den aktuelle posisjonen når sløyfe gjentas.

3 Opprett en ny sløyfe inne den første. Legg til følgende løkke disposisjon etter at du lagrer den gjeldende verdien i sin variabel:

for (int j = 0; j <i; j ++) {
// Sjekk tidligere verdier
}

Inne i denne loop, kan du sammenligne gjeldende verdi til de som vises på tidligere stillinger i matrisen. På denne måten kan fortelle hvis nåverdien er en duplikat.

4 Sammenligne dagens antall til tidligere verdier. Inni andre for loop, legger du til følgende betinget utsagn:

if (currNum == myNums [j]) {
// Verdien er et duplikat
}

Dersom denne testen viser en sann verdi, betyr det at det aktuelle oppstillingselementet er lik en tidligere, med dens posisjon indikert av den andre løkketelleren. Inne i betinget hvis setningen, instruere programmet hva de skal gjøre når det oppstår en duplikat:

dupNum = currNum;
dupPos = i;
gå i stykker;

Koden angir verdiene av duplisert nummer og dens posisjon, slik at de vil være tilgjengelig når sløyfen er ferdig. Ingen videre punkt finnes for å fortsette med sløyfe på dette stadiet, så pause uttalelse stopper den fra itera videre.

5 Bryte ut av den første sløyfen. Pausen uttalelse bryter bare koden ut fra nærmeste loop. Dette betyr at den ytre løkken vil fortsette selv når du har funnet den dupliserte verdi. Etter den avsluttende hylle for innvendig loop, legger du til følgende betinget utsagn:

if (dupNum> = 0) break;

Hvis duplikat ikke er funnet, vil den ytre sløyfe fortsette å utføre. Du kan legge til følgende test uttalelse etter ytre sløyfe stenger:

System.out.println ( "Duplisert nummer:" + dupNum + ", posisjon:" + dupPos);

Hvis koden ikke ligger en kopi, vil begge variablene fortsatt lagre verdier av negativt.

Hint

  • Embedded looper kan være utfordrende i starten på grunn av den komplekse flyt av kjøring involvert, men de kan hjelpe deg til å gjennomføre prosesser konsist.
  • Hvis du trenger å oppdage mer enn en kopi, kan du trenger for å lage en andre rekke å lagre disse verdiene.