PDA

View Full Version : Array di oggetti Java


Skenks
18-07-2005, 16:49
Ciao ragazzi,
mi serve un vostro aiuto.
Devo scrivere un metodo che prende un array di oggetti Ordine e restituisce un array dello stesso tipo.
Ogni oggetto Ordine contiene sia il codice di un libro che il numero di copie.

L'array di oggetti che fo in input contiene solo le copie richieste mentre quello retituito in output contiene il numero di copie effettivamente vendute.

L'oggetto Ordine è definito così:

public class Ordine{
Integer codice, numero;

public Integer getCodice() {
return codice;
}

public void setCodice(Integer codice) {
this.codice = codice;
}


public Integer getNumero() {
return numero;
}

public void setNumero(Integer numero) {
this.numero = numero;
}

}



avete qualche idea di come implementare questa metodo? aiutatemi con gli array di oggetti....please!

Alvaro Vitali
18-07-2005, 17:06
Come si distingue l'ordine venduto dal prenotato?

Skenks
18-07-2005, 17:14
L'utente dovrebbe inserire il codice e quanti libri vuole comprare.

Il numero di copie attuali si vanno a leggere all'interno dell' XML.
Il numero di copie che l'utente compra le inserisce lui da input.
In numero di copie vendute è dato dalla sottrazione delle copie attuali - copie inserite dall'utente.

franksisca
18-07-2005, 17:41
Se usi la JDK 1.5(la tiger) le nuove API permettono di usare le liste TIPATE(dico io), ovvero, come da descrizione delle API, puo farli lavorare direttamente sugli oggetti specificati(ordine in questo caso).

Ti consiglio di inserire una
private boolean venduto;

e inizializzarla ne costruttore a false, e mettere i soliti metodi accessori(in questo caso sono 2:getVenduto();setVenduto(true|false);).

Per lavora con gli array di oggetti lavora con gli array di tipo normale.
Semplicemente li devi considerare come oggetti e non come tipi di base.
Per suggerimenti controlla la variabile boolean e il resto viene da sè.

franksisca
18-07-2005, 17:47
ASpetta che mi sà che non ho capito il problema :( :( !!!

Allora crea un vettore di oggetti Ordine di dimensione pari a quello in input, e poi lo rimepi con oggetti nuovi, facciamo tipo così:
public Ordine[] ordiniVenduti(Ordine[]ordine){
Ordine[]o=new Ordine[ordine.length];
for(int i=0;i<o.length;++i){
o[i]=new Ordine(ordine[i].getCodice(),(catalogoMemoria[i].getNumero()-ordine[i].getNumero()));
}
return o;
}
naturalmente catalogoMemoria lo costruisci da qualche altra parte ed è tutto l'archivio.Se ho capito bene il problema credo che questa possa essere una soluzione.
Fammi sapere.

Skenks
18-07-2005, 17:54
grazie ragazzi per le risposte....ma per riempirlo l'array di oggetti Ordine come fare franksisca?
p.s. il tuo codice è molto interessante spero risponderai....

Skenks
18-07-2005, 17:59
cioè una cosa del tipo così pensi vada bene:

System.out.println("Inserisci quanti libri vuoi comprare: ");
int numero = Integer.parseint(br.readline());
Ordine[] ordine = new Ordine[numero];

boolean test = true;
while(test){
if(j != numero){
Ordine o = ordine[j]=new Ordine();
System.out.println("Digita il codice del libro: ");
o.setCodice(new Integer(br.readline()));
System.out.println("Digita il numero di copie: ");
o.setNumero(new Integer(br.readline()));
j=j+1;
}
else{
tesgt = false;
}
}

p.s. dovrei prima riempire l'array di oggetti e poi mandarlo ad un'altro metodo che dovrebbe calcolare le copie effettivamente vendute e cioè una cosa simile come l'hai fatta tu.