|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Feb 2009
Messaggi: 10
|
[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: 1202
|
prova a usare stringbuffer invece che string, e ritorna il .toString()
|
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Feb 2009
Messaggi: 10
|
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 19: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 12: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 15: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: 10
|
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: 05:11.


















