Om du har en numerisk array i ett Java -program och det innehåller en oönskad dubbla värde , kanske du behöver hitta den . Använda slingstrukturer , kan din kod iterera igenom din array , kontrollera varje värde för att se om det redan har inträffat och att du vet var den dubbla är . Genom att bädda en loop inuti en annan , kan din kod kontrollera varje punkt mot tidigare poster . Ge dig själv ett tydligt grepp om den process genom att tänka hela vägen igenom vad som ska hända när koden körs varje gång du lägger till en ny kontroll struktur . Instruktioner
1
Skapa din numerisk array . Om du inte redan har ett antal array i ditt program , kan du använda följande exempel :
int [ ] myNums = { 3 , 5 , 1 , 6 , 5 , 8 , 7 } ;
raden deklarerar och exemplifierar en array med primitiva värden typ heltal . Som ni kan se , är det dubbla värdet på nummer fem . Förbered två variabler för att lagra den duplicerade numerärt värde och det läge den sitter i arrayen :
int dupNum = -1, int dupPos = -1 ,
Genom att initiera dessa till negativ , du kommer att kunna berätta om din process finner en dubblett värde i arrayen eller inte .
2
Skapa en slinga för att iterera igenom din array . Lägg följande struktur loop disposition till ditt program :
for (int i = 1 ; i < myNums.length , i + + ) { //process innehåll här }
Denna slinga kommer iterera gång för varje element i din numerisk array . Inne i loopen , kan du genomföra kontroll processen , jämföra varje post till föregående objekt i strukturen . Lagra nuvarande antal värde i en lokal variabel inuti din loop : . Int currNum = myNums [ i] ;
Detta värde representerar heltalet vid den aktuella positionen när slingan itererar
3
Skapa en andra slinga inuti den första. Lägg följande slinga disposition när du lagrar det aktuella värdet i sin variabel :
for (int j = 0 ; j < i; j + + ) { //kolla tidigare värden }
Inuti denna loop , du kan jämföra det aktuella värdet på de som förekommer vid tidigare positioner i arrayen . Detta sätt kan du berätta om det aktuella värdet är en dubblett .
4
Jämför det aktuella numret till tidigare värden . Inuti din andra for-loop , tillsätt följande villkorlig uttalande :
om ( currNum == myNums [ j ] ) { //värdet är en dubblett }
p Om detta test ger ett äkta värde , betyder det att den nuvarande arrayelementet är lika med en tidigare en , med sin position som anges av den andra slingan räknaren . Inuti den villkorliga if , instruera programmet vad man ska göra när den stöter på en dubblett :
dupNum = currNum , dupPos = i; break;
koduppsättningarna värdena för duplicerade antal och sin position , så att de kommer att vara tillgängliga när slingan avslutas . Ingen ytterligare punkt existerar för att fortsätta med slingan i detta skede , så att break stoppar det från iteration vidare .
5
Bryt ut den första slingan . Den break bryter bara din kod ut från närmaste slingan . Detta innebär att den yttre slingan kommer att fortsätta även när du har hittat det dubbla värdet . Efter den sista som monteras på insidan slingan , tillsätt följande villkorlig uttalande :
om ( dupNum > = 0 ) break;
Om duplikat har inte hittats , kommer den yttre loopen fortsätta körningen . Du kan lägga till följande test uttalande efter din yttre slingan stänger :
System.out.println ( " Dubblerad nummer : " + dupNum + " , läge : " + dupPos ) ;
Om koden inte har hittat en dubblett , kommer båda variablerna fortfarande lagra värden för negativ .