Come trovare il numero duplicato in un array in Java

November 12

Come trovare il numero duplicato in un array in Java


Se si dispone di una matrice numerica in un programma Java e contiene un valore duplicato indesiderato, potrebbe essere necessario trovarlo. Utilizzando strutture di ciclo, il codice può scorrere l'array, controllando ogni valore per verificare se si è già verificato e ti permette di sapere dove il duplicato è. Incorporando un loop all'interno di un altro, il codice può controllare ogni voce contro gli elementi precedenti. Datevi una chiara comprensione del processo pensando tutto il percorso attraverso che cosa accadrà quando il codice viene eseguito ogni volta che si aggiunge una nuova struttura di controllo.

istruzione

1 Crea la matrice numerica. Se non si dispone già di una matrice di numero nel vostro programma, è possibile utilizzare il seguente esempio:

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

Questa linea dichiara e crea un'istanza di un array con valori interi di tipo primitivo. Come si può vedere, il valore duplicato è il numero cinque. Preparare due variabili per memorizzare il valore numero di duplicato e la posizione che si siede alla all'interno della matrice:

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

Con l'inizializzazione questi a uno negativo, si sarà in grado di dire se il processo trova un valore duplicato nella matrice oppure no.

2 Creare un ciclo per scorrere l'array. Aggiungere la seguente struttura di massima ciclo per il programma:

for (int i = 1; i <myNums.length; i ++) {
// contenuti di processo qui
}

Questo ciclo si iterare una volta per ogni elemento nella propria matrice numerica. All'interno del ciclo, è possibile implementare il processo di verifica, confrontando ogni voce alle voci precedenti nella struttura. Memorizzare il valore numerico corrente in una variabile locale all'interno del ciclo:
int currNum = myNums [i];

Questo valore rappresenta il numero intero nella posizione corrente ogniqualvolta le un'iterazione.

3 Creare un secondo ciclo all'interno del primo. Aggiungere il seguente schema ciclo dopo si memorizza il valore corrente nella sua variabile:

for (int j = 0; j <i; j ++) {
// Controllare i valori precedenti
}

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

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

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

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

dupNum = currNum;
dupPos = i;
rompere;

Il codice imposta i valori del numero duplicato e la sua posizione, in modo che siano accessibili quando il ciclo termina. Non esiste ulteriore punto per continuare con il loop in questa fase, quindi l'istruzione break impedisce di iterazione ulteriormente.

5 Uscire dal primo ciclo. L'istruzione break rompe solo il codice fuori dal loop più vicino. Ciò significa che il ciclo esterno continuerà anche quando è stato trovato il valore duplicato. Dopo la parentesi di chiusura per il ciclo all'interno, aggiungere la seguente istruzione condizionale:

if (dupNum> = 0) break;

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

System.out.println ( "Numero duplicato:" + dupNum + ", la posizione:" + dupPos);

Se il codice non è situato un duplicato, entrambe le variabili saranno comunque memorizzare i valori di uno negativo.

Consigli e avvertenze

  • cicli incorporati può essere difficile in un primo momento a causa del complesso flusso di esecuzione in questione, ma possono aiutare a implementare i processi in modo conciso.
  • Se avete bisogno di rilevare più di un duplicato, il necessario per creare un secondo array per memorizzare questi valori.