PDA

View Full Version : [Java] Aiuto per l'utilizzo di ArrayList.


supersalam
20-04-2010, 17:11
Salve ragazzi,

Il prof ci ha dato da fare un esercizio. Vuole che creiamo un piccolo database utilizzando Array e ArrayList.

Devo creare una Classe Studente e una classe Esame.
Poi tramite una classe "che noi chiamiamo Demo" devo visualizzare le possibili cose che si possono fare.
Il programma deve prevedere l'inserimento di uno Studente e ad esso associare degli esami "quelli che lui ha svolto".

Lo studente andrà a far parte dell'ArrayList Studenti!

Mi fermo qua per ora.

In pratica ho creato la classe studente e nella classe Demo "che contiene il main" ho creato l'ArrayList Studenti:

import java.util.Scanner;
import java.util.ArrayList;

public class Demo {
static Scanner input= new Scanner(System.in);
//private Esame[] Esami = new Esame[1000];
static ArrayList<Studente> Studenti = new ArrayList<Studente>();


public static void main(String[] args) {


System.out.println("Benvenuto, seleziona l'operazione");
System.out.println("1 - Aggiungi un nuovo studente.");
System.out.println("2 - Visualizza studenti.");
System.out.println("scelta: ");
int selezione = input.nextInt();
switch(selezione) {

case 1:
Studenti.add(new Studente());
break;

case 2:
int index=Studenti.size();
for (int i=0; i=index; i++) {
System.out.println(Studenti[i].getstudente());
}
break;

default:


}


}

}

Lasciate perdere se ci sono errori, non mi sto dedicando al resto del codice. Quello che voglio fare è inserire uno studente nell'ArrayList e poi visualizzare tutti gli studenti che si trovano nell' ArrayList.

I problemi che riscontro sono 2:

a: non riesco a porre index=Studenti.size() (dentro al case 2)

b: sempre nel case 2 non so bene come fare il for che mi visualizza tutti gli oggetti di Studenti. In pratica non so scorrere all'interno di un ArrayList.

Ciao a tutti.

Don[ITA]
20-04-2010, 19:10
Il secondo "campo" di un ciclo for deve essere una condizione booleana

for(int i = 0; i == index; i++)

Se vuoi stampare semplicemente il contenuto di un ArrayList basta che fai:

System.out.println(Studenti);

oppure:

for(int i = 0; i < Studenti.size(); i++) {
System.out.println(Studenti.get(i));
}

o ancora:

for(Studente s : Studenti) {
System.out.println(s);
}


:)

supersalam
22-04-2010, 16:09
Mi serve ancora aiuto.

In pratica utilizzando i metodi che mi consiglia Don ottengo questo output:

---Benvenuto, seleziona l'operazione---
|1 - Aggiungi un nuovo studente.------|
|2 - Visualizza studenti.-------------|
|0 - Per uscire.----------------------|
scelta:
1
Inserisci nominativo Studente:
alessandro

Inserisci matricola:
1234
scelta:
2
[Studente@69b332]


E non va bene, io voglio che si visualizzino i nominativi e le matricole di tutti gli elementi di tipo Studente nell'array list.
Come faccio a richiamare un metodo di un oggetto dall'ArrayList?
Non so se sono stato chiaro, in pratica vorrei fare una cosa del tipo:

Studenti[Studente.getstudente()];

Forse con questo esempio strambo riesco a spiegarmi.

Don[ITA]
22-04-2010, 16:41
Devi sovrascrivere il metodo toString() della classe Studente.
Ipotizzando che la tua classe abbia dei campi così:

private String nominativo;
private String matricola;

dovresti aggiungere questo codice:

@Override
public String toString() {
return nominativo + " " + matricola; //per il tuo esempio restituirebbe alessandro 1234
}


Invece per richiamare i metodi degli oggetti nella tua collezione fai qualcosa tipo:

Studente s = Studenti.get(indice); //indice dell'elemento che vuoi prelevare
s.metodoCheVuoiRichiamare();


;)

banryu79
22-04-2010, 16:46
La tua classe Studente, (come tutte le classi in Java) implicitamente estende la classe Object, dalla quale, tra l'altro, eredita il metodo toString che viene invocato nel momento in cui passi una istanza di Studente come argomento al metodo System.out.println(xxx).

A te viene fuori sta roba: Studente@69b332 perchè il metodo toString definito in Object non fa altro che stampare il nome della classe di cui l'oggetto è un'istanza, seguito dal carattere '@' seguito dalla rapresentazione esadecimale del hash code dell'oggetto.

In pratica ti basta ridefinire il metodo toString nella tua classe Studente in modo che restituisca una String fatta come vuoi te :)

supersalam
22-04-2010, 16:58
Grazie ragazzi, purtroppo ho comprato un manuale schifoso e non tratta bene gli ArrayList, quindi non conosco i metodi che contiene.

Meno male che ci siete voi.

Don[ITA]
22-04-2010, 18:37
Se hai altri dubbi su metodi/classi di java puoi guardare direttamente qui
http://java.sun.com/javase/6/docs/api/

:)

ndakota
22-04-2010, 20:54
Grazie ragazzi, purtroppo ho comprato un manuale schifoso e non tratta bene gli ArrayList, quindi non conosco i metodi che contiene.

Meno male che ci siete voi.

Qua non c'entra ArrayList. Dovrebbe parlarne in un ipotetico capitolo sull'ereditarietà.