Excusez moi je jouer au boulet mais je capte pas une erreur java ... - Java - Programmation
Marsh Posté le 01-02-2003 à 17:28:29
Code :
|
le truc c a partir dun stringtokenziker créé en vector avec dedan les mot mais pas ajouté le redondan mon blem c ke :
EstDedan = (mot.equals(lex.get(i)));
revoi tjrs false et je c pas pk
Marsh Posté le 01-02-2003 à 17:30:51
ca réponds pas a la question, mais en passant :
t'as pas besoin de caster en string pour utiliser .equals(), c'est une methode d'object
Marsh Posté le 01-02-2003 à 17:31:14
a causede ta boucle: quand tu as trouve, faut sortir de la boucle, sinon estdedans quiv aut vrai risque d'etre mis a faux lors de la prochaine itération. donc rajoute un autre test dans la condition de ton for
Marsh Posté le 01-02-2003 à 17:31:50
Tu compares des String à des StringBuffer, pourquoi donc ?
C'est Taz qui a la solution, en revanche, je ne comprends toujours pas pourquoi tu ajoutes des StringBuffer dans ton Vector et pas des String toutes bêtes.
Marsh Posté le 01-02-2003 à 17:32:29
++Taz a écrit : a causede ta boucle: quand tu as trouve, faut sortir de la boucle, sinon estdedans quiv aut vrai risque d'etre mis a faux lors de la prochaine itération. donc rajoute un autre test dans la condition de ton for |
Bien vu !
Marsh Posté le 01-02-2003 à 17:33:29
Cherrytree a écrit : Tu compares des String à des StringBuffer, pourquoi donc ? |
ué jvien dle voir
now ca pass :
Code :
|
prochaine étape les trié en ordre alphabétik
Marsh Posté le 01-02-2003 à 17:37:11
++Taz a écrit : a causede ta boucle: quand tu as trouve, faut sortir de la boucle, sinon estdedans quiv aut vrai risque d'etre mis a faux lors de la prochaine itération. donc rajoute un autre test dans la condition de ton for |
rololo sui a la mass
Code :
|
thx
Marsh Posté le 01-02-2003 à 17:37:50
Deux choses :
* ici, c'est pas un SMS ou un chat, tu peux écrire autant de lettres que tu veux, c'est la fête ! Donc si tu pouvais éviter "d'écrir kom ça", ça serait bien pour tout le monde, merci
* Java c'est bien mais à ta place et pour plus de lisibilité, je déclarerais mes variables du genre : StringBuffer sb = new StringBuffer();
En gros, mets le type de ta variable devant son nom comme ça on sait en un coup d'oeil à quoi ça correspond (d'ailleurs, je savais même pas que c'était possible de faire autrement ).
Enfin et surtout, j'ai pas très bien compris ton problème Tu pourrais sortir la trace de l'Exception ou dire à quelle ligne elle se réfère, steuplé ?
EDIT : roh putain, 5 min au phone et chu grillaid 2000 fois
Marsh Posté le 01-02-2003 à 17:38:42
tu pouvais laisser un for, y a pas de mal. ca serait d'aillerus peut etre plus lisible, surtout en initialisant estdedans=false dans le premier statement du for
Marsh Posté le 01-02-2003 à 17:40:04
comme dit taiche, oublie le pascal: déclare tes varaibles au plus pres de leur initialisation
Marsh Posté le 01-02-2003 à 17:47:26
++Taz a écrit : comme dit taiche, oublie le pascal: déclare tes varaibles au plus pres de leur initialisation |
Code :
|
pr son exemple j'avai pas tro le choi ... je cré le stringbuffer ke kan je suis sur ke je le mot rentre ds le vector
Marsh Posté le 01-02-2003 à 17:50:33
EpoK a écrit : |
Ouais non mais c'que je veux dire c'est qu'il ne faut pas écrire
Code :
|
mais plutôt :
Code :
|
Marsh Posté le 01-02-2003 à 17:53:08
EpoK a écrit : |
déclaration != instanciation
Marsh Posté le 01-02-2003 à 17:54:28
Taiche a écrit :
|
ok
mais là j'écrit sb = new StringBuffer(mot), je peu pas trop le faire avant d'avoir mot
Marsh Posté le 01-02-2003 à 17:55:48
EpoK a écrit : |
mais rien ne t'empeche de ne déclarer sb que dans ton if, plutot qu'en tete de fonction
Marsh Posté le 01-02-2003 à 17:55:49
mais bordel, déclare tes varaibles la ou tu en as besoin et pas dans un bloc massif a chaque nouvelle fonction
Marsh Posté le 01-02-2003 à 18:03:50
peut etre que tu ferais bien de changer le types de lex ou de l'ordonner, par ce que la recherche linéaire, c'est pas top.
personnellement, moi je penserais à un Set
http://java.sun.com/j2se/1.4/docs/ [...] l/Set.html
ton traitement serait alors
Code :
|
Marsh Posté le 01-02-2003 à 18:36:48
++Taz a écrit : peut etre que tu ferais bien de changer le types de lex ou de l'ordonner, par ce que la recherche linéaire, c'est pas top.
|
hum hum jai pas encore vu cette class
v jeté un oeil merci
Marsh Posté le 03-02-2003 à 12:40:31
EpoK a écrit :
|
Taz> Désolé de te contredire, mais normalement, le "for" ne doit être utilisé que quand on connait à l'avance le nombre d'itérations. Sinon, il perd énormément de sa lisibilité, et il vaut beaucoup mieux utiliser "while".
Epok> Comme l'a dit lorill en tout début du topic, equals() s'invoque sur un Object et attend un Object en argument. Donc tu peux écrire :
Code :
|
ou
Code :
|
Et puis, en français, "dedans" prend un 's' final...
Enfin, à mon avis, il n'a pas besoin de booléen ici :
Code :
|
Maintenant, 2 choses :
Marsh Posté le 03-02-2003 à 14:11:28
BifaceMcLeOD a écrit : |
étant donné que ici le parcours est fait par index, le for me parait au contraire sémantiquement plus correcte et plus lisible qu'un while avec une variable index initialisée on ne sait ou
Marsh Posté le 03-02-2003 à 14:16:14
Tout dépend de quoi on parle : du "for" C ou du "for" algorithmique. Parce que je te rappelle qu'en algorithmique pure, le "for" s'écrit :
for i in [value1, value2] loop ... |
Il n'est donc pas question de pouvoir y loger une autre condition que "i < value2"...
Marsh Posté le 03-02-2003 à 17:11:50
c'est bon là j'ai plus besoin de while ni de for, falai juste trouvé la bonne méthode dans la doc ...
Code :
|
Marsh Posté le 03-02-2003 à 18:41:06
ReplyMarsh Posté le 03-02-2003 à 19:30:14
benou a écrit : |
Ouais ça c'est la convention MS.
Marsh Posté le 04-02-2003 à 14:28:59
Oui, et puis, il y a des lignes de code inutiles ici.
A quoi ça sert par exemple d'initialiser "EstDedan" puisqu'à l'instruction suivante, tu lui affectes de toute façon une valeur ? Et à quoi servent "i" et "motvecteur" ?
Par ailleurs, Vector, comme sa superclasse List, contient des instances d'Object, pas de String, donc il est inutile de caster le retour de nextElement() en String (ou alors utilise la méthode nextToken(), qui te renvoie directement une instance de String).
Rappelle-toi qu'un cast alourdit l'écriture et n'est jamais gratuit à l'exécution en Java. Alors autant les éviter lorsqu'ils sont inutiles.
En fait, je te suggère plutôt d'écrire :
Code :
|
Tu noteras que ce code est strictement équivalent au tien, mais il ne contient que le code nécessaire. Or moins de lignes de code, c'est d'autant de moins de code à maintenir ensuite.
Marsh Posté le 04-02-2003 à 14:36:23
et temps qu'à faire, autant utiliser un Set puisque c'est ca que tu veux (HashSet par exemple).
Code :
|
en plus ce sera plus rapide ...
Marsh Posté le 04-02-2003 à 17:39:48
benou a écrit : et temps qu'à faire, autant utiliser un Set puisque c'est ca que tu veux (HashSet par exemple).
|
ce que j'ai déjà proposé 1 miyion de posts auparavant. mais moi j'aurais plutot dit un SortedSet (TreeSet)
Marsh Posté le 04-02-2003 à 17:51:37
++Taz a écrit : ce que j'ai déjà proposé 1 miyion de posts auparavant. mais moi j'aurais plutot dit un SortedSet (TreeSet) |
ha oui tiens ...
pourquoi un TreeSet ?
c'est plus lent et ca a juste un intérêt si tu veux ordonner la collection ...
Marsh Posté le 04-02-2003 à 18:07:05
ben je sais pas , histoire de montrer que ça existe et peut etre pour faire une démo. pi faut voir que c'est souvent plus facile de faire une fonction de comparaison qu'une bonne fonction de hashage
Marsh Posté le 04-02-2003 à 18:09:19
ok mais bon, la c'est des String. Elle est déjà tout faite la fonctione de hashage
Marsh Posté le 01-02-2003 à 17:24:16
Exception in thread "main" java.lang.ClassCastException
je compren ke c un de mes cast ki merde mais cette erreur survient quand on essai de faire koi de mal ?
merci