PDA

View Full Version : [Java] - Ordinamento e non solo.....


loranz83
23-05-2008, 18:14
salve a tuttii!
Dunque, arrivo subito al punto...
Devo gestire un progetto "VIDEOTECA" che presenta due classi, CLIENTE e VIEDEOTECA.
la struttura di CLINETE è + o meno questa:

public class Cliente {
private int id;
private String nome;
private String cognome;
private String residenza;
private String fiscalCode;
}

ora all'interno di VIDEOTECA ho un array di clienti, ovvero i clienti della veideoteca del tipo

Cliente[] myarray = new Cliente[100];

i quesiti sono questi:

innanzi tutto: come devo fare dentro la classe videoteca a reliazzare le seguenti funzioni:

CaricaCliente: ovvero funzione con la quale riempio l'array;
StampaListaClienti: ovvero funzione che mi stampi i clienti pero ordinati alfabeticamente x residenza.....

Help!

wizard_at
23-05-2008, 18:33
CaricaCliente: ovvero funzione con la quale riempio l'array;
StampaListaClienti: ovvero funzione che mi stampi i clienti pero ordinati alfabeticamente x residenza.....

Help!

CaricaCliente puo' funzionare in due modi
-in maniera stupida: prende e in un posto vuoto mette un nuovo cliente(non e' che lo mette ma semplicemente riempie un valore)
-trova il posto corretto de l Cliente, sposta gli altri avanti e si inserisce

Stampa Lista Clienti: se sono gia' ordinati basta fare un for, senno' fai una funzione che li cerca in modo alfabetico unop dopo l'altro.

loranz83
23-05-2008, 19:08
mi andrebbe bene anke in maniera stupida xke l'ordinamento lo metterei nella funzione di stampa....
Per ordinare posso usare la funzione Collections.sort??se si come??
puoi farmi un esemopio con il codice anke x l'isnerimento??
xke io avevo pensato di farlo tipo

public void aggiungiUtente(){
arrayClienti[numUtenti] = new Clienti();
........

solo mi da errore dicendomi che new cliente è nn è visibile....
nn sono molto pratico di java perdonatemi magari sara unerrore idiota....

Don[ITA]
23-05-2008, 19:51
Io ti rispondo per il metodo stampaListaClienti().
Innanzitutto in cliente implementerei l'interfaccia Comparable in questo modo:

public class Cliente implements Comparable<Cliente> {
...
...
public int compareTo(Cliente c){
return residenza.compareTo(c.getResidenza());
}
}

In questo modo quando l'array verrà sortato, ti trovi esattamente l'ordine come lo vuoi tu.
Poi il metodo che richiedi lo farei cosi (ovviamente se per stama intendi una stampa su System.out):

private void stampaListaClienti(Cliente[] myarray){
Arrays.sort(myarray);
for(Cliente c : myarray)
System.out.println(c);
}

è da intendersi che per fare la stampa come te l'ho scritta io la tua lcasse cliente deve overridare il metodo toString() di Object così che ti stampi quello che vuoi, una roba del genere insomma:

@Override
public String toString(){
return nome + " " + cognome + " " + residenza;
}

che ti stampa qualcosa tipo:
Mario Rossi via qualcosa 42

Ciauz

p.s. per l'inserimento te lo scrivo domani perchè ora devo scappare :stordita:

Don[ITA]
24-05-2008, 10:50
Eccomi qui per l'inserimento :D
Cosa intendi per CaricaCliente?
Cosa dovrebbe fare? caricarti la tua lista di clienti prelevandola da cosa? da file, da tastiera? o semplicemente vuoi che ti carichi dei clienti generati casualmente?

loranz83
24-05-2008, 10:54
Io per cliente ho un costruttore con cui carico tutti i campi, vorrei appunto sfruttare questo.... non so se mi sono spiegato!

Don[ITA]
24-05-2008, 11:41
Si ok avrai qualcosa tipo:

public Cliente(int id, String nome, String cognome, String residenza, String fiscalCode){
this.id = id;
this.nome = nome;
this.cognome = cognome;
this.residenza = residenza;
this.fiscalCode = fiscalCode;
}

Ma quei dati da dove li prendi?
Perchè se vuoi crearti una lista di 100 Clienti da zero, o li inserisci tu manualmente, o li prendi ad esempio da un file.
Cmq se ti vuoi creare una funzione che aggiunga clienti al tuo array potresti fare così:

public void addCliente(Cliente c){
myarray[index] = c;
index++;
}

Quando l'array è vuoto index = 0;