Ciao raga, vorrei un aiuto su come risolvere questo problema: fare in modo di caricare un array di n elementi tutti diversi tra loro, infine visualizzarlo. Come faccio a non far caricare un elemento che esiste già nel vettore?
Ciao raga, vorrei un aiuto su come risolvere questo problema: fare in modo di caricare un array di n elementi tutti diversi tra loro, infine visualizzarlo. Come faccio a non far caricare un elemento che esiste già nel vettore?
Hai diversi modi, in base a ciò che puoi o non puoi usare e in base a ciò che puoi o non puoi conoscere dell'array.
Metodo 1 (banale, inefficiente): ogni volta che l'utente inserisce un numero, scorri tutto l'array (fino alla posizione in cui sei arrivato) alla ricerca di un elemento uguale. Se lo trovi, non lo accetti, altrimenti lo inserisci.
Metodo 2 (se puoi usare strutture dati un po' più sofisticate): usa un ArrayList (o meglio un HashSet). Quando l'utente inserisce un numero verifichi se è presente nell'ArrayList usando il suo metodo contains() (non serve per HashSet, l'add fa già il controllo per te). Se è già presente non lo accetti, altrimenti lo inserisci.
Metodo 3 (utilizzabile se devi far inserire all'utente tutti i numeri da 0 a N-1, o da 1 a N, adattabile): costruisci un secondo array di appoggio, magari di boolean. Ad ogni inserimento del valore X verifichi se nella posizione X dell'array di appoggio c'è scritto true. Se c'è scritto true, non accetti il valore, altrimenti lo inserisci e scrivi true nell'array di appoggio.
Ci sono altri modi, probabilmente più efficienti, questi sono i primi 3 che mi sono venuti in mente.
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Grazie per la risposta, ho deciso di utilizzare il 1 metodo. Credo di aver finito, solo che non funziona correttamente, potresti dirmi dove sbaglio? Grazie in anticipo.
codice:package elementiarraydiversi; import java.util.Scanner; public class elementiarraydiversi { public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); int n,p,i; System.out.println("Quanti elementi sono?"); n=in.nextInt(); int v[]=new int[n]; for(i=0;i<n;i++) { System.out.println("Inserisci un elemento"); p=in.nextInt(); for(int c=0;c<i;c++) { if(p!=v[i]) { v[i]=p; } else { System.out.println("Elemento esistente"); } } } for(i=0;i<n;i++) { System.out.println((i+1)+"° elemento"+v[i]); } } }