probleme de newbie (tri de tableau) [java] - Java - Programmation
Marsh Posté le 13-05-2004 à 19:00:23
merci de suivre la charte et de ne pas polluer le forum avec 36 sujets sur le même problème. la solution t'as déjà était donnée en long et en large, la dernière fois tu as posté ce même bout de code faux et nraynaud t'as corrigé
Marsh Posté le 13-05-2004 à 19:03:14
Taz a écrit : merci de suivre la charte et de ne pas polluer le forum avec 36 sujets sur le même problème. la solution t'as déjà était donnée en long et en large, la dernière fois tu as posté ce même bout de code faux et nraynaud t'as corrigé |
c t sur l'appel de eaSort, pas l'appel de Array.sort
Marsh Posté le 13-05-2004 à 19:11:29
eAnts[0].eaSort (eAnts); ...
mais pourquoi tu veux pas écrire
Arrays.sort((object[])eants, new ElitistAntComparator) ?
ou implémenter Comparable directement dans ElitistAnt et écrire Arrays.sort((object[])eants) ? spa compliqué pourtant
Marsh Posté le 13-05-2004 à 19:17:47
Taz a écrit : eAnts[0].eaSort (eAnts); ... |
Ben jse pas ma solution jla trouve logique
Je cree une innerclass ElitistAnt a l'interieur de la classe j'implemente la methode de tri+comparaison => encapsulation.
Sinon pour la solution de nraynaud, cette ligne ne passe pas :
|
=>erreur : Ant.java [61:1] java.util.Comparator is abstract; cannot be instantiated
ce qui est clair. D'ou mon implementation :
Comparator cmp; (mais apres ca merde dans l'appel de Array.sort )
Qu'en penses tu ?
Marsh Posté le 13-05-2004 à 19:21:28
que t'es une quiche, qu'on aura beau t'expliquer 100ans, tant que t'auras pas lu le chapitre « objet et polymorphisme : héritage, classe abstraite et interface » de ton cours java...
Marsh Posté le 13-05-2004 à 19:27:24
Giz a écrit :
|
dans ma "solution", il devait y avoir un truc avec des accolades entre la parenthèse fermante et le point-virgule, ou alors j'avais beaucoup trop bu, ce qui ne me parraît pas une explication plausible (parce que même à 15g/L, je suis encore capable de parler de classe annonyme).
Marsh Posté le 13-05-2004 à 19:28:46
Ouai bon merci pour t conseilles , en attendant je ne sais tjs pas ou est l'erreur dans mon code
Marsh Posté le 13-05-2004 à 19:29:07
je crois que de toute façon, implements Comparable est plus simple pour lui http://java.sun.com/j2se/1.4.2/doc [...] rable.html
Marsh Posté le 13-05-2004 à 19:31:38
Giz a écrit : Ouai bon merci pour t conseilles , en attendant je ne sais tjs pas ou est l'erreur dans mon code |
on peut voir le message d'erreur ?
Taz > à tous les coup tu as raison en plus. On sait même pas quel aspect il compare ni ce que représentent ses objets.
Marsh Posté le 13-05-2004 à 19:42:00
nraynaud a écrit : dans ma "solution", il devait y avoir un truc avec des accolades entre la parenthèse fermante et le point-virgule, ou alors j'avais beaucoup trop bu, ce qui ne me parraît pas une explication plausible (parce que même à 15g/L, je suis encore capable de parler de classe annonyme). |
|
Ouai bon j'ai corrige, maintenant une autre erreur dans la declaration de ma classe.
erreur :
Ant.java [57:1] ant.Ant.ElitistAnt is not abstract and does not override abstract method compare(java.lang.Object,java.lang.Object) in java.util.Comparator
quequifofaire ?
Marsh Posté le 13-05-2004 à 19:42:47
ReplyMarsh Posté le 13-05-2004 à 19:44:15
Taz a écrit : que t'es une quiche, qu'on aura beau t'expliquer 100ans, tant que t'auras pas lu le chapitre « objet et polymorphisme : héritage, classe abstraite et interface » de ton cours java... |
Marsh Posté le 13-05-2004 à 19:45:40
Giz a écrit : |
Putain, tu sais c'que c'est, une interface ?
Marsh Posté le 13-05-2004 à 19:51:37
Taiche a écrit : Putain, tu sais c'que c'est, une interface ? |
Ben j'ai fais comme ca pour une autre interface et ca passe :
|
Manque quoi ?
Marsh Posté le 13-05-2004 à 19:57:58
Ha ouai OK, c pas la methode equals que je suis oblige d'implementer du fait que ma classe n'est pas abstraite ?
Jsuis chaud (ou bouillant ?:D) la ?
Marsh Posté le 13-05-2004 à 20:01:02
Giz > je crois que tu as raté un truc.
en gros tu as 2 approche pour la comparaison :
- soit il existe un ordre intrinsèque pour tes objets (les String on les classe comme dans le dico), alors on fait implémenter comparable par la classe
- soit on veut les comparer selon un critère particulier (style on veut trier des String par leur taille) alors on utilise un Comparator externe qui comparera selon le critère en question. souvent, les fonctions qui ont besoin de comparer, acceptent un Comparator en argument optionnel.
Marsh Posté le 13-05-2004 à 20:06:10
Roh au s'cours... va apprendre les notions de base avant d'te lancer dans la prog, hein
Marsh Posté le 13-05-2004 à 20:08:47
nraynaud a écrit : Giz > je crois que tu as raté un truc. |
Oui d'accord, moi j'ai choisi la methode comparator pour trier mes objets ElitistAnt...il faut que j'utilise comparable.
comparator prend n'importe quels objets et comparable prend l'objet appelant pour comparer avec un autre objet
EDIT : lorsque la methode Array.sort s'execute, je veux qu'elle appelle la methode compare du comparator en lui passant 2 elements du tableaux (les 2 objets elitistAnt)
Marsh Posté le 13-05-2004 à 20:28:26
Giz a écrit : moi j'ai choisi la methode comparator pour trier mes objets ElitistAnt...il faut que j'utilise comparable. |
ta gueule
Marsh Posté le 13-05-2004 à 20:29:43
Giz a écrit : |
ça tombe bien, c'est ce qu'elle fait.
Marsh Posté le 13-05-2004 à 20:36:51
Bon merci de rien quand meme ... jsuis pas mieux avance, jverrai ca avec mon "boss" demain (le seul qui connait le java dans un labo d'info )
PS : j'ai beau regarder des cours sur les interfaces, je ne vois pas mon erreur!
Marsh Posté le 13-05-2004 à 20:40:16
Giz a écrit : (le seul qui connait le java dans un labo d'info ) |
L'hôpital qui s'fout de la charité
Marsh Posté le 13-05-2004 à 20:48:12
Code :
|
kado
Marsh Posté le 13-05-2004 à 20:49:01
ouaah cool l'objet qui prend une array d'instances de ses copains pour les trier!
Marsh Posté le 13-05-2004 à 20:49:02
Taz a écrit : la vache tu bosses dans un labo |
il est cobaye là-bas ...
Marsh Posté le 13-05-2004 à 20:49:32
Taz a écrit : la vache tu bosses dans un labo |
ouai
et je passe beaucoup plus de tps a me faire chier avec ce Java qu'a faire mon vrai travail !
Moi je dis vive le C : ca s'apprend en 1 journee au moins pour en faire autant que le java
Marsh Posté le 13-05-2004 à 20:51:35
the real moins moins a écrit : ouaah cool l'objet qui prend une array d'instances de ses copains pour les trier! |
corrected
Marsh Posté le 13-05-2004 à 20:51:35
Giz a écrit : ouai |
si t'es capable d'assimiler un concept simple comme les interfaces, j'imagine le carton en C
supair ton code
Marsh Posté le 13-05-2004 à 20:51:52
haaaaaaahahahahaouhouhou...bouhou...
non, spas vrai.
Je dis pas que le C, c'est pas bien, je dis juste que faire du Java, sans avoir fait un minimum d'efforts de compréhension de la philosophie du langage, forcément, c'est la galère.
Sans déconner, et sans aucune condescendance, lit les tutoriaux de Sun du style "Java pour les newbies", ou "getting started", ça t'aidera sans doute beaucoup.
Marsh Posté le 13-05-2004 à 20:54:49
nraynaud a écrit :
|
Ha enfin un qui a compris que ca commencer a me gaver !
Merci bien.
Au fait j'ai lu noir sur blanc dans des cours java de base qu'une interface s'implemente comme suit :
class nom_classe implements nom_des_interfaces
Alors quand je vois dans la doc Java :
|
je trouvais ma syntaxe de declaration de la classe elitistAnt normale !
Marsh Posté le 13-05-2004 à 20:54:49
Giz a écrit : Moi je dis vive le C : ca s'apprend en 1 journee au moins pour en faire autant que le java |
moi je dit vive les boulets qui font de la prog comme d'autre font de
la peinture en batiment ...
Marsh Posté le 13-05-2004 à 20:54:56
bon allez, la charité
Code :
|
on garde les subtilités pour ta puberté
Marsh Posté le 13-05-2004 à 18:56:22
Bon tout de suite jvous averti : je suis newbie en Java, je galere avec sa syntaxe
En fait je veux faire un tri de tableau et au moment du tri, il lance une erreur d'execution (lors du debugage ligne a ligne)
bon voila le tableau :
public class Ant
{
private ElitistAnt[] eAnts;
//ci dessous la inner-class :
public class ElitistAnt implements Comparator
{
public int eval;
public int numAnt;
Comparator cmp;
public ElitistAnt () {};
public void eaSort (ElitistAnt[] ea)
{
//ci dessous la ligne qui plante
Arrays.sort ((Object[])ea, cmp);
}
public int compare(Object o1, Object o2)
{
return ((ElitistAnt) o1).eval - ((ElitistAnt) o2).eval;
}
}
//...plus loin dans le code
eAnts[0].eaSort (eAnts);
}
Bon quelle est l'erreur a la ligne indiquee ?