|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 9
|
[Java] Stampare risultati da un vettore
Ciao a tutti.
Ho le seguenti classi: Quiz, Domanda; Ogni Quiz è formato da X domande (un vettore contente gli oggetti "Domanda") e da un argomento (il tipo di quiz, "Storia", "Italiano" ecc..) Devo riuscire a fare un metodo (toString()) che mi restituisce una stringa contente l'argomento del quiz e l'insieme delle domande. Quindi nella classe "Domanda" ho realizzato il metodo toString() che restituisce solo il testo della domanda: Classe Domanda Codice:
public String toString() { return testo; } Classe Quiz Codice:
/* "domande" è il vettore di oggetti contente le domande */ public String toString() { Domanda domanda; String testo = "Argomento del quiz: "+this.argomento+"\n\n"; for(int i=0;i<this.domande.size(); i++) { domanda = domande.get(i); testo += i+"-"+domande.get(i)+"\n"; } return testo; } Ogni aiuto consiglio è ben accetto, grazie a chi risponderà ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2006
Messaggi: 1192
|
prova a usare stringbuffer invece che string, e ritorna il .toString()
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 9
|
Non posso usare stringbuffer, perché il metodo "toString()" deve essere per forza di tipo Stringa, altrimenti da errore.
NB: devo per forza usare il metodo toString non un'altro con un altro nome.. [edit] Avevo capito male, ho provato come hai detto ma nessun risultato.. Codice:
public String toString() { Domanda domanda; StringBuffer testo = new StringBuffer("Argomento del quiz: "+this.argomento+"\n\n"); for(int i=0;i<this.domande.size(); i++) { domanda = domande.get(i); testo.append(i+"-"+domande.get(i)+"\n"); } return testo.toString(); } Ultima modifica di mask89 : 16-12-2009 alle 18:15. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ma la classe Domanda ha definito il metodo:
Codice:
public String toString() Verifica anche che, quando il chiamante che stampa il tutto (presumo in System.out) invoca il metodo toString di Quiz, il campo "domande" della classe Quiz oltre a essere inizializzato contenga effettivamente almeno un riferimento ad un oggetto Domanda istanziato ![]() Se posti tutto il codice (le due classi più lo spezzone che stampa il Quiz) è più facile capire il problema. Tanto per darti un'idea di massima: Codice:
class Domanda { String testoDomanda; public Domanda(String testo) { testoDomanda = testo; } @Override public String toString() { return testoDomanda; } } public class Quiz { String argomento; Set<Domanda> domande; public Quiz(String argomento) { this.argomento = argomento; this.domande = new HashSet<Domanda>(); } public void addDomanda(Domanda d) { domande.add(d); } @Override public String toString() { StringBuffer sb = new StringBuffer(); sb.append("Quiz, argomento: ").append(argomento).append("\n") .append("domande:\n"); for (Domanda d : domande) { sb.append(d.toString()); } return sb.toString; } // testiamo la classe public static void main(String[] argv) { Quiz quizStoria = new Quiz("Storia"); Domanda d1 = new Domanda("Chi, dei Mille, fu ferito ad una gamba?"); Domanda d2 = new Domanda("In che anno è nato il nonno di mio nonno?"); quizStoria.add(d1); quizStoria.add(d2); System.out.println(quizStoria.toString()); } }
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 17-12-2009 alle 11:56. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: May 2009
Messaggi: 129
|
Supponendo che nella classe quiz tu abbia una variabile di istanza:
Codice:
private Vector domande; private String argomento; Io farei il toString() cosi': Codice:
public String toString(){ String header="Quiz sull'argomento :"+this.getArgomento()+"\n"; String temp=""; String ris=""; for(int i=0;i<domande.size();i++){ if(domande.elementAt(i)!=null) temp=temp+"DOMANDA "+ i + ":"+this.domande.elementAt(i)+"\n"; } ris=header+temp; return ris; Uscito dal ciclo concateni l'header alle domande presenti in temp e restituisci il risultato (ris). ciao Ultima modifica di javacomelava : 17-12-2009 alle 14:14. |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: May 2009
Messaggi: 129
|
questa versione è funzionante(ridotta all'osso):
Classe Domanda Codice:
public class Domanda{ private String domanda; public Domanda(String d){ this.domanda=d; } public void setDomanda(String d){ this.domanda=d; } public String getDomanda(){ return domanda; } public String toString(){ String ris=this.getDomanda()+"\n"; return ris; } } Codice:
import java.util.Vector; public class Quiz{ private String argomento; private Vector domande; /* * Per velocità ho fatto il costruttore cosi',ma volendo puoi creare un vector vuoto a poi fai un * metodo inserisciDomanda */ public Quiz(String argomento,Vector domande){ if(domande.size()>0){ this.domande=domande; this.argomento=argomento; } else System.err.println("Errore: impossibile creare un quiz con 0 domande!!!\n"); } public String getArgomento(){ return this.argomento; } public String toString(){ String header="\n****** ARGOMENTO QUIZ: "+this.getArgomento()+" ******\n\n"; String temp=""; String ris=""; for(int i=0;i<domande.size();i++){ if(domande.elementAt(i)!=null) temp=temp+"DOMANDA: "+i+" "+domande.elementAt(i)+"\n"; } ris=header+temp; return ris; } } Codice:
import java.util.Vector; public class TestQuiz{ public static void main(String[] args){ Domanda A=new Domanda("Come si chiama Maldini?"); Domanda B=new Domanda("L'eta' di Del Piero?"); Domanda C=new Domanda("Quante champions ha vinto la juventus?"); Domanda D=new Domanda("Chi e' il presidente del Milan?"); String argomento="CALCIO"; Vector V=new Vector(); V.addElement(A); V.addElement(B); V.addElement(C); V.addElement(D); Quiz quiz=new Quiz(argomento,V); System.out.println(quiz); } } |
![]() |
![]() |
![]() |
#7 |
Junior Member
Iscritto dal: Feb 2009
Messaggi: 9
|
Grazie a chi mi ha risposto, ma ho risolto.
Il problema era che non si riempiva il vettore e quindi non entrava nel ciclo. bye |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:59.