Hvordan at finde den duplikerede nummer i et array i Java

December 1

Hvordan at finde den duplikerede nummer i et array i Java


Hvis du har en numerisk array i et Java-program, og det indeholder en uønsket to eksemplarer værdi, kan du nødt til at finde den. Ved hjælp af loop strukturer, kan din kode gentage gennem dit array, kontrol hver værdi for at se, om den allerede har fundet sted, og fortælle dig, hvor to eksemplarer er. Ved at indlejre en løkke inde i en anden, kan din kode kontrollere hvert element mod foregående elementer. Giv dig selv en klar forståelse af processen ved at tænke hele vejen igennem, hvad der vil ske, når din kode henretter hver gang du tilføjer en ny kontrolstruktur.

Instruktioner

1 Opret din numerisk array. Hvis du ikke allerede har et nummer array i dit program, kan du bruge følgende prøve:

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

Denne linje erklærer og instantierer et array med primitiv typen heltal. Som du kan se, den dublerede værdi er nummer fem. Forbered to variabler til lagring af det duplikerede talværdi og den position, den sidder på inden array:

int dupNum = -1;
int dupPos = -1;

Ved initialisering disse til negativ, vil du være i stand til at fortælle, om din proces finder en dublet værdi i array eller ej.

2 Opret en løkke til at gentage gennem dit array. Tilføj følgende loop skitse struktur til dit program:

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

Denne løkke vil gentage en gang for hvert element i din numerisk array. Inde i løkken, kan du implementere den kontrol proces, sammenligne hvert element til de foregående elementer i strukturen. Gem det nuværende antal værdi i en lokal variabel i din løkke:
int currNum = myNums [i];

Denne værdi repræsenterer heltal på den aktuelle position, når løkken gentager.

3 Opret en anden sløjfe inden i den første. Tilføj følgende loop skitse efter du gemme den aktuelle værdi i sin variabel:

for (int j = 0; j <i; j ++) {
// Tjek tidligere værdier
}

Inde i denne løkke, kan du sammenligne den aktuelle værdi for dem, der fremgår på tidligere positioner i array. Denne måde kan du fortælle, hvis den aktuelle værdi er en dublet.

4 Sammenlign det nuværende antal af tidligere værdier. Inde dit andet for-løkke, tilføje følgende betingede udsagn:

if (currNum == myNums [j]) {
// Værdien er en dublet
}

Hvis denne test returnerer en sand værdi, betyder det, at den nuværende arrayelement er lig med en tidligere, med sin position som angivet af det andet loop tæller. Inde i betinget, hvis erklæring, instruere programmet hvad de skal gøre, når det støder på en kopi:

dupNum = currNum;
dupPos = i;
pause;

Koden angiver værdierne for det duplikerede nummer og dens position, således at de vil være tilgængelige, når sløjfen afsluttes. Ingen yderligere punkt findes for at fortsætte med løkken på dette tidspunkt, så pausen erklæring stopper det fra iteration yderligere.

5 Bryde ud af den første sløjfe. Bruddet erklæring kun bryder din kode ud fra den nærmeste løkke. Det betyder, at den ydre løkke vil fortsætte, selv når du har fundet den dublerede værdi. Efter den afsluttende beslag til indvendig loop, tilføje følgende betingede udsagn:

if (dupNum> = 0) break;

Hvis der ikke er fundet to eksemplarer, vil den ydre løkke fortsætte udførelsen. Du kan tilføje følgende test erklæring efter din ydre løkke lukker:

System.out.println ( "duplikerede nummer:" + dupNum + ", position:" + dupPos);

Hvis din kode ikke har placeret en dublet, vil begge variabler stadig lagre værdier af negativ.

TIPS

  • Indlejrede løkker kan være en udfordring i første omgang på grund af den komplekse strøm af henrettelse involveret, men de kan hjælpe dig med at implementere processer koncist.
  • Hvis du har brug for at opdage mere end en dublet, kan du nødt til at oprette en anden matrix til at gemme disse værdier.

relaterede artikler