Hvis du har en numerisk matrise i et Java- program , og det inneholder en uønsket duplikat verdi , må du kanskje finne det. Ved hjelp av loop-strukturene , kan koden din reagere gjennom arrayet , sjekker hver verdi å se om det allerede har skjedd , og fortelle deg hvor duplikat . 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 med å tenke hele veien gjennom hva som vil skje når koden utfører hver gang du legger til en ny styringsstruktur. Instruksjoner
en
Lag din numerisk matrise. Hvis du ikke allerede har en rekke utvalg i programmet, kan du bruke følgende eksempel : en
int [ ] myNums = { 3 , 5, 1, 6, 5 , 8, 7 };
Denne linjen erklærer og instantiates en matrise med primitive typen heltallsverdier . Som du kan se, er duplikatverdi nummer fem . Forbered to variabler for lagring av duplisert tallverdi og den posisjonen den sitter på i matrisen : en
int dupNum = -1 ; int dupPos = -1 ;
Ved initialisering disse til negativ en, vil du være i stand til å fortelle om din prosess finner en duplikat verdien i matrisen eller ikke.
2
Lag en løkke til å reagere gjennom arrayet . Legg til følgende løkke ytre struktur til programmet : en
for ( int i = 1; i < myNums.length ; i + + ) { //prosess innholdet her }
Denne sløyfen vil veksle en gang for hvert element i numerisk matrise. Inne i loop, kan du gjennomføre kontroll av prosessen , sammenligner hvert element til forrige elementene i strukturen . Oppbevar den nåværende tallverdi i en lokal variabel inni løkken din : . Int currNum = myNums [i ];
Denne verdien representerer heltall ved nåværende posisjon når løkken gjentar
3
Lag en ny løkke inni den første. Legg til følgende løkke disposisjon etter at du lagrer den gjeldende verdien i sin variable : en
for ( int j = 0 ; j < i; j + + ) { //sjekk tidligere verdier }
Inne i denne sløyfen , kan du sammenligne dagens verdi til de som vises på tidligere posisjoner i tabellen. På denne måten kan du fortelle om den nåværende verdien er et duplikat.
4
sammenligne dagens tall til tidligere verdier . Inni andre for loop, legge til følgende betinget utsagn : en
if ( currNum == myNums [ j ] ) { //verdien er en kopi }
p Hvis denne testen returnerer en sann verdi , betyr dette at det aktuelle matriseelement er lik en tidligere , med dens posisjon indikert av den andre sløyfen telleren. Inne i betinget hvis setningen , instruere programmet hva du skal gjøre når det oppstår en duplikat : en
dupNum = currNum ; dupPos = i; break;
Koden setter verdiene for duplisert nummer og sin posisjon , slik at de vil være tilgjengelig når loopen er ferdig . Ingen videre punkt finnes for å fortsette med sløyfe på dette stadiet , så pausen setningen stopper den fra iterating 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, legge til følgende betinget utsagn : en
if ( dupNum > = 0 ) break ;
p Hvis det dupliserte har ikke blitt funnet, vil den ytre løkken fortsette utføring . Du kan legge til følgende test uttalelse etter ditt ytterste ledd stenger : en
System.out.println ( " duplisert nummer: " + dupNum + " , posisjon : " + dupPos ) ;
< p > Hvis koden ikke har plassert en kopi, vil begge variabler fortsatt være lagring av verdier av negativt .