Nwlapcug.com


Come trovare il numero di duplicati in un Array in Java



Se si dispone di una matrice numerica in un programma Java e contiene un valore duplicato indesiderato, necessario per trovarlo. Utilizzando le strutture di ciclo, il codice consente di scorrere l'array, controllando ogni valore per vedere se si è già verificato e che ti permette di sapere dove si trova il duplicato. Incorporando un ciclo all'interno di un altro, il codice può verificare ogni elemento contro gli elementi precedenti. Regalati una chiara comprensione del processo di pensiero fino in fondo che cosa accadrà quando il codice viene eseguito ogni volta che si aggiunge una nuova struttura di controllo.

Istruzioni

1

Creare la matrice numerica. Se non avete già una matrice di numeri nel vostro programma, è possibile utilizzare l'esempio seguente:

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

Questa riga dichiara e crea un'istanza di una matrice con valori integer di tipo primitivo. Come potete vedere, il valore duplicato è il numero cinque. Preparare due variabili per memorizzare il valore duplicato del numero e la posizione che si trova all'interno della matrice:

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

L'inizializzazione di questi al negativo, sarete in grado di dire se il vostro processo individua un valore duplicato nella matrice o non.

2

Creare un ciclo per scorrere la matrice. Aggiungere la seguente struttura di ciclo per il programma:

per (int i = 1; i < myNums.length; i + +) {
Elabora contenuto qui
}

Questo ciclo si ripete una volta per ogni elemento nella matrice numerica. All'interno del ciclo, è possibile implementare il processo di verifica, confronta ogni elemento agli elementi precedenti nella struttura. Memorizzare il valore del numero corrente in una variabile locale all'interno il ciclo:
int currNum = myNums [i];

Questo valore rappresenta il numero integer nella posizione corrente ogni volta che il ciclo di iterazione.

3

Creare un secondo ciclo all'interno della prima. Aggiungere la seguente struttura di ciclo dopo aver memorizzato il valore corrente nella relativa variabile:

per (int j = 0; j < i; j + +) {
controllare i valori precedenti
}

All'interno di questo ciclo, è possibile confrontare il valore corrente di quelli che appaiono alle precedenti posizioni nella matrice. In questo modo si può dire se il valore corrente è un duplicato.

4

Confrontare il numero corrente ai valori precedenti. All'interno il secondo ciclo for, aggiungere la seguente istruzione condizionale:

if(currNum==myNums[j]) () {
il valore è un duplicato
}

Se questo test restituisce un valore true, vuol dire che l'elemento di matrice corrente è uguale a una precedente, con la sua posizione indicata dal secondo contatore di ciclo. All'interno l'istruzione condizionale if istruzione, istruire il programma cosa fare quando viene rilevato un duplicato:

dupNum = currNum;
dupPos = i;
Break;

Il codice imposta i valori del numero duplicato e sua posizione, affinché siano accessibili quando il ciclo finisce. Nessun ulteriore punto esiste per proseguire con il ciclo in questa fase, quindi l'istruzione break interrompe l'iterazione ulteriormente.

5

Uscire dal primo ciclo. L'istruzione break scoppia solo il codice dal loop più vicino. Questo significa che il ciclo esterno continuerà anche quando avete trovato il valore duplicato. Dopo la parentesi di chiusura per l'interno ciclo, aggiungere la seguente istruzione condizionale:

Se (dupNum > = 0) break;

Se non è stato trovato il duplicato, il ciclo esterno continuerà l'esecuzione. È possibile aggiungere la seguente istruzione di prova dopo il ciclo esterno si chiude:

System.out.println ("numero di duplicati:" + dupNum + ", posizione:" + dupPos);

Se il codice non ha localizzato un duplicato, entrambe le variabili ancora verranno archiviati i valori di uno negativo.

Consigli & Avvertenze

  • Loop incorporato può essere difficile a prima a causa del complesso flusso di esecuzione coinvolto, ma che consentono di implementare processi in modo conciso.
  • Se avete bisogno di rilevare più di un duplicato, necessario per creare una seconda matrice per memorizzare questi valori.