|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
[java] sbaglio la toString?
ho fatto questo programmino(ancora devo mettere tutti i controlli) ma ho problemi quando mi stampa la "rubrica"(visto che ancora non salva sui file
src.zip altrimenti il codici sono Eser1.java: Codice:
import java.util.Vector;
public class Eser1 {
public static void main(String args[]) {
int choose;
Vector elenco = new Vector(1, 1);
System.out.println("\tRUBRICA");
menu();
do {
do {
choose = Console.readInt("? ");
if(choose < 1 || choose > 5)
System.out.println("scelta errata. ripeti.");
} while(choose < 1 || choose > 5);
switch(choose) {
case 1:
add(elenco);
break;
case 2:
modify(elenco);
break;
case 3:
delete(elenco);
break;
case 4:
showAll(elenco);
break;
case 5:
break;
}
} while(choose != 5);
}
static void menu() {
System.out.println("1- aggiungi scheda\n2- modifica scheda\n3- elimina scheda");
System.out.println("4- visualizza rubrica\n5- esci");
}
static void add(Vector elenco) {
Persona p = new Persona();
p.name = Console.readLine("inserisci nome: ");
p.number = Console.readLine("inserisci numero: ");
elenco.addElement(p);
}
static void modify(Vector elenco) {
int ind = Console.readInt("inserire numero della scheda da modificare: ");
Persona p = new Persona();
p.name = Console.readLine("inserisci nome: ");
p.number = Console.readLine("inserisci numero: ");
elenco.setElementAt(p, --ind);
}
static void delete(Vector elenco) {
int ind = Console.readInt("inserire numero della scheda da eliminare: ");
elenco.removeElementAt(--ind);
System.out.println("scheda elminata.");
}
static void showAll(Vector elenco) {
Persona p = new Persona();
for(int i = 0; i < elenco.size(); i++) {
p = (Persona) elenco.elementAt(i);
System.out.println(i+1 + "- " + p);
}
}
}
Codice:
public class Persona {
public String number;
public String name;
public String toString() {
return name + "\t" + number;
}
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Si ma il problema qual'è?
Magari se postassi anche cosa ti stampa... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
No, la toString() in class Persona è definita correttamente, devi solo invocarla esplicitamente qui:
Codice:
static void showAll(Vector elenco) {
Persona p = new Persona();
for(int i = 0; i < elenco.size(); i++) {
p = (Persona) elenco.elementAt(i);
System.out.println(i+1 + "- " + p);
}
}
Codice:
System.out.println(i+1 + "- " + p.toString()); |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
no ma funziona solo che un esempio di stampa:
Codice:
ivan 347 ciao 123 dio 666 erty 345 asd 17 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Codice:
ivan 347 ciao 123 dio 666 erty 345 asd 17 Nella seconda perchè "si tocca", 17 porta male @ERRATA CORRIGE: ho scritto una vaccata sopra, meglio se oggi non posto più, sto crollando dal sonno e sono ai minimi livelli di lucidità (si era già notato? |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
ma perchè infatti da quel che ho capito la toString dovrebbe evitare quella chiamata.. cioè dovrebbe definire l'"output" di un oggetto.. e infatti l'esempio faceva
System.out.println(p); grazie al metodo toString ma senza chiamarlo esplicitamente.. boh non capisco. |
|
|
|
|
|
#7 | |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
Quote:
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
|
è quel che ho fatto.. però c'è qualche problemino.. nessuno?
|
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Ehmm, prova a dargli due tab di fila e vedi come viene l'allineamento.
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2780
|
Ho provato a compilarlo e a me funziona bene mettendo i tuoi stessi input
|
|
|
|
|
|
#11 |
|
Member
Iscritto dal: Jan 2008
Città: roma
Messaggi: 296
|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jan 2005
Città: Siena
Messaggi: 1313
|
Io credo dipenda dalla lunghezza del nome che deve stampare.
Se scrivi "asd" e poi tab, il numero si posiziona alla prima tabulazione (che supponiamo è alla "colonna" n°5), quindi ti sembra di vedere solo uno spazio) Se scrivi "erty" allora premendo tab salterà la prima tabulaizone e si sposterà sulla seconda (che, sempre ipoteticamente parlando, è alla "colonna" n° 10). Prova a scrivere nomi con numero di lettere uguali e vedi se tabula bene! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:30.




















