[JAVA] méthode toString

méthode toString [JAVA] - Java - Programmation

Marsh Posté le 27-03-2004 à 23:53:31    

Bonjour,
voilà je suis en train de me galérer sur la méthode toString :

Code :
  1. class FloatArray {
  2. int INVALID_PARAMETER;
  3. protected float[] _tab;
  4. public FloatArray(int size) {
  5.  this._tab=new float[size];
  6. }
  7. public boolean contains(float value) {
  8.  for (int i=0;i<_tab.length;i++)
  9.   if (_tab[i]==value) return true;
  10.  return false;
  11. }
  12. public float elementAt(int index) {
  13.  return _tab[index];
  14. }
  15. public int setElementAt(float val,int index) {
  16.  try{
  17.   _tab[index]=val;
  18.   return 0;
  19.  }catch (java.lang.ArrayIndexOutOfBoundsException e)
  20.   {System.out.println("Depassement des bornes du tableau" );
  21.   return INVALID_PARAMETER;}
  22. }
  23. public int size() {
  24.  return _tab.length;
  25. }
  26. public String toString() {
  27.  return _tab;
  28. }
  29. }


je n'arrive pas à construire la dernière méthode
je crois ne pas avoir bien compris le rôle de cette méthode (ça remplace bien System.out.println ?)
Fabien


Message édité par gobbaf le 27-03-2004 à 23:54:37
Reply

Marsh Posté le 27-03-2004 à 23:53:31   

Reply

Marsh Posté le 27-03-2004 à 23:54:30    

ça remplace, c'est utilisé : faut que tu renvoie une string qui corresponde à une représentation de ton objet

Reply

Marsh Posté le 27-03-2004 à 23:57:51    

Taz a écrit :

ça remplace, c'est utilisé : faut que tu renvoie une string qui corresponde à une représentation de ton objet


ça alors ?

Code :
  1. public String toString() {
  2.  return Float.toString(_tab);
  3. }


visiblement ça ne compile pas


Message édité par gobbaf le 27-03-2004 à 23:58:46
Reply

Marsh Posté le 27-03-2004 à 23:59:17    

tu la sors d'ou cette méthode ?

Reply

Marsh Posté le 27-03-2004 à 23:59:54    

Taz a écrit :

tu la sors d'ou cette méthode ?


bah ne nulle part, j'essaie de la faire

Reply

Marsh Posté le 28-03-2004 à 00:01:08    

return "Prout" et commence à voir comment ça fonctionne quand tu fais un print

Reply

Marsh Posté le 28-03-2004 à 00:01:46    

sinon java.util ça te dit quelque chose ?

Reply

Marsh Posté le 28-03-2004 à 00:04:33    

Taz a écrit :

sinon java.util ça te dit quelque chose ?


Code :
  1. public String toString {
  2. return "toto";


ne renvoit rien lorsque je l'appelle du main

Code :
  1. t.toString();

Reply

Marsh Posté le 28-03-2004 à 00:06:03    

Systm.out.println(tonobjet);

Reply

Marsh Posté le 28-03-2004 à 00:08:44    

Taz a écrit :

Systm.out.println(tonobjet);


Code :
  1. public String toString() {
  2.  return System.out.printl(_tab);
  3. }


y'a quelquechose qui m'échappe  :heink:

Reply

Marsh Posté le 28-03-2004 à 00:08:44   

Reply

Marsh Posté le 28-03-2004 à 00:09:26    

le probleme c'est que j'ai un tableau

Reply

Marsh Posté le 28-03-2004 à 00:10:05    

putain mais t'es le dernier des abrutis ou quoi ?

Reply

Marsh Posté le 28-03-2004 à 00:10:16    

Taz a écrit :

return "Prout" et commence à voir comment ça fonctionne quand tu fais un print

Reply

Marsh Posté le 28-03-2004 à 00:12:59    

Taz > bon courage.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 00:30:12    

merci à toi
j'espère pas être le dernier des abrutis  [:tuffgong]
 

Code :
  1. public String toString() {
  2.  String s = "Le tableau a les valeurs suivantes : ";
  3.  for (int i=0;i<_tab.length;i++)
  4.   s = s+" "+_tab[i];
  5.  return s;
  6. }


+ System.out.println(monobjet)
 
désolé d'être si bête mais je ne l'avais pas encore vu
Fabien

Reply

Marsh Posté le 28-03-2004 à 00:34:32    

tip of the day : lire les conventions de codage Java
http://java.sun.com/docs/codeconv/ [...] C.doc.html
 
le _ est pas très apprécié, ni en C/C++ d'ailleurs

Reply

Marsh Posté le 28-03-2004 à 00:34:57    

et jète un oeil aux StringBuffer, c'est bien plus efficace

Reply

Marsh Posté le 28-03-2004 à 00:51:12    

Taz a écrit :

et jète un oeil aux StringBuffer, c'est bien plus efficace


Code :
  1. public String toString() {
  2. String s = new StringBuffered().append("Le tableau a les valeurs suivantes : " ).toString();
  3. for (int i=0;i<_tab.length;i++)
  4. s = s.append(" " ).append(_tab[i]).toString();
  5. return s;
  6. }


un truc de ce style?


Message édité par gobbaf le 28-03-2004 à 00:51:33
Reply

Marsh Posté le 28-03-2004 à 00:51:28    

Taz a écrit :

et jète un oeil aux StringBuffer, c'est bien plus efficace

[+1] et j'aurais bien aimé retrouver le système printOn:/printString de smalltalk !


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 28-03-2004 à 00:57:57    

ben non, tu fais n'importe quoi là
tu crées un seul StringBuffer, tu append, et une seule fois à la fin, tu extrait la String sous-jacente

Reply

Marsh Posté le 28-03-2004 à 01:04:46    

Code :
  1. StringBuffered s = new StringBuffered().append("Le tab" );
  2.  for (int i=0;i<_tab.length;i++) {
  3.   s=s.append(" " );
  4.   s=s.append(_tab[i]);
  5.  }
  6.  s=s.toString();
  7. return s;


Reply

Marsh Posté le 28-03-2004 à 01:05:55    

StringBuffered ? non mais t'es sur que tu compile la ou quoi ?

Reply

Marsh Posté le 28-03-2004 à 01:16:28    

Code :
  1. StringBuffer s = new StringBuffer().append("Le tab" );
  2.  for (int i=0;i<_tab.length;i++) {
  3.   s=s.append(" " );
  4.   s=s.append(_tab[i]);
  5.  }
  6.  String s2=s.toString();
  7. return s2;


pourquoi est-ce plus efficace?
(sinon désolé mais je suis un peu fatigué)

Reply

Marsh Posté le 28-03-2004 à 01:22:59    

parce que les String sont immutables

Reply

Marsh Posté le 28-03-2004 à 01:32:36    

pourtant on peut faire ça sur un String :

Code :
  1. String s = "a"+"b"+1;
  2. s = s+2;
  3. System.out.println(s);
  4. // ça donne bien ab12 à l'éxécution


 
ça y est : java compile un nouveau String à chaque fois qu'il rencontre " "  


Message édité par gobbaf le 28-03-2004 à 01:34:26
Reply

Marsh Posté le 28-03-2004 à 01:34:31    

oui et ?

Reply

Marsh Posté le 28-03-2004 à 01:40:33    

c'est moi ou Joce a rajouté des mots clés pour la coloration syntaxique ?


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 28-03-2004 à 01:42:51    

Code :
  1. export explicit restricted interface extends implements throws
  2. "chaine de caractères"

tiens le explicit me parait nouveau. tu vois quoi toi ?


Message édité par Taz le 28-03-2004 à 01:43:26
Reply

Marsh Posté le 28-03-2004 à 01:46:47    

je ne vois pas pourquoi ceci :

Code :
  1. StringBuffer s = new StringBuffer().append("Le tab" );
  2. for (int i=0;i<_tab.length;i++) {
  3.   s=s.append(" " );
  4.   s=s.append(_tab[i]);
  5. }
  6. String s2=s.toString();
  7. return s2;


est plus efficace que ceci :

Code :
  1. String s = new String().concat("Le tab" );
  2.  for (int i=0;i<_tab.length;i++) {
  3.   s=s.concat(" " );
  4.   s=s.concat(Float.toString(_tab[i]));
  5.  }
  6.  return s;


 
cependant merci de répondre à mes questions, j'ai appris pas mal de choses aujourd'hui
 [:org%40n]

Reply

Marsh Posté le 28-03-2004 à 01:50:20    

mais le voilà notre fameux gagnant dans la catégorie "incompréhension total du système de typage et méconnaissance des types de bases en java"

Reply

Marsh Posté le 28-03-2004 à 01:52:13    

gobbaf a écrit :

je ne vois pas pourquoi ceci :

Code :
  1. StringBuffer s = new StringBuffer().append("Le tab" );
  2. for (int i=0;i<_tab.length;i++) {
  3.   s=s.append(" " );
  4.   s=s.append(_tab[i]);
  5. }
  6. String s2=s.toString();
  7. return s2;


est plus efficace que ceci :

Code :
  1. String s = new String().concat("Le tab" );
  2.  for (int i=0;i<_tab.length;i++) {
  3.   s=s.concat(" " );
  4.   s=s.concat(Float.toString(_tab[i]));
  5.  }
  6.  return s;


 
cependant merci de répondre à mes questions, j'ai appris pas mal de choses aujourd'hui
 [:org%40n]  

Dans le deuxième solution, à chaque concat un nouvel objet String est alloué pour contenir le résultat. C'est parce que String est immutable. Mais comme dit Taz, faudrait reprendre les bases là.


---------------
Au royaume des sourds, les borgnes sont sourds.
Reply

Marsh Posté le 28-03-2004 à 01:56:19    

donc s+"toto" == s.concat("toto" )
du coup un nouveau String est alloué
dans ce cas-là j'ai à peu près compris


Message édité par gobbaf le 28-03-2004 à 01:56:52
Reply

Marsh Posté le 28-03-2004 à 01:57:58    

gobbaf a écrit :


du coup un nouveau String est alloué

y a pas de du coup, c'est systématique, vu que les java.lang.String sont immutables

Reply

Marsh Posté le 28-03-2004 à 03:02:39    

ok

Reply

Marsh Posté le 15-04-2004 à 15:59:44    

gobbaf a écrit :

le probleme c'est que j'ai un tableau


 
La méthode toString() sert à avoir une représentation chaîne de caractère d'un objet.
Pour certains objets c'est utile pour d'autre ça l'est moins.
 
Si tu l'as crée pas elle est héritée.


Message édité par pascal34 le 15-04-2004 à 16:00:49
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed