[java] probleme de newbie (tri de tableau)

probleme de newbie (tri de tableau) [java] - Java - Programmation

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  :sweat:  
 
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 ?  :??:

Reply

Marsh Posté le 13-05-2004 à 18:56:22   

Reply

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é

Reply

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

Reply

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 :o

Reply

Marsh Posté le 13-05-2004 à 19:17:47    

Taz a écrit :

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 :o


 
Ben jse pas ma solution jla trouve logique  [:spamafote]  
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 :


public Comparator cmp = new Comparator ();


=>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 ?

Reply

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...

Reply

Marsh Posté le 13-05-2004 à 19:27:24    

Giz a écrit :


Sinon pour la solution de nraynaud, cette ligne ne passe pas :


public Comparator cmp = new Comparator ();



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).


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

Marsh Posté le 13-05-2004 à 19:28:46    

Ouai bon merci pour t conseilles :sarcastic:, en attendant je ne sais tjs pas ou est l'erreur dans mon code


Message édité par Giz le 13-05-2004 à 19:29:28
Reply

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

Reply

Marsh Posté le 13-05-2004 à 19:31:38    

Giz a écrit :

Ouai bon merci pour t conseilles :sarcastic:, 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.


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

Marsh Posté le 13-05-2004 à 19:31:38   

Reply

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).



//ligne ci-dessous compile pas
public class ElitistAnt implements Comparator
 {
  public int eval;
  public int numAnt;
                public Comparator cmp = new Comparator ()
                {
                    public int compare(Object o1, Object o2)
                    {
                            return ((ElitistAnt) o1).eval - ((ElitistAnt) o2).eval;
                    }
                };
  public void eaSort (ElitistAnt[] ea)
  {
   Arrays.sort ((Object[])ea, cmp);
  }
   
 }


 
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 ?  [:maldoror]

Reply

Marsh Posté le 13-05-2004 à 19:42:47    

bon, je délate. ras le cul.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-05-2004 à 19:43:54    

coup de latte ?

Reply

Marsh 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...

Reply

Marsh Posté le 13-05-2004 à 19:45:40    

Giz a écrit :


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 ?  [:maldoror]


Putain, tu sais c'que c'est, une interface ? [:mlc]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-05-2004 à 19:47:25    

non, alors le concept d'objet aidant au tri ...

Reply

Marsh Posté le 13-05-2004 à 19:51:37    

Taiche a écrit :

Putain, tu sais c'que c'est, une interface ? [:mlc]


 
Ben j'ai fais comme ca pour une autre interface et ca passe :


public class TSP implements Evaluate
{
 private static final int nbCities = 5;
...
}


 
Manque quoi ? :/

Reply

Marsh Posté le 13-05-2004 à 19:55:08    

un cerveau ?

Reply

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 ?

Reply

Marsh Posté le 13-05-2004 à 20:00:06    

...

Reply

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.


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

Marsh Posté le 13-05-2004 à 20:01:36    


 
veut dire quoi ? glacial ou bouillant ?  :??:

Reply

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 [:kiki]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-05-2004 à 20:08:47    

nraynaud a écrit :

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.


 
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)


Message édité par Giz le 13-05-2004 à 20:10:43
Reply

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 :o

Reply

Marsh Posté le 13-05-2004 à 20:29:43    

Giz a écrit :


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)

ça tombe bien, c'est ce qu'elle fait.


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

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 :sarcastic:)
 
PS : j'ai beau regarder des cours sur les interfaces, je ne vois pas mon erreur!

Reply

Marsh Posté le 13-05-2004 à 20:40:16    

Giz a écrit :

(le seul qui connait le java dans un labo d'info :sarcastic:)


L'hôpital qui s'fout de la charité [:ciler]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-05-2004 à 20:46:14    

la vache tu bosses dans un labo :ouch:

Reply

Marsh Posté le 13-05-2004 à 20:48:12    

Code :
  1. public class ElitistAnt
  2. {
  3.   public int eval;
  4.   public int numAnt;
  5.                 public Comparator cmp = new Comparator ()
  6.                 {
  7.                     public int compare(Object o1, Object o2)
  8.                     {
  9.                             return ((ElitistAnt) o1).eval - ((ElitistAnt) o2).eval;
  10.                     }
  11.                 };
  12.   public static void eaSort (ElitistAnt[] ea)
  13.   {
  14.    Arrays.sort (ea, cmp);
  15.   }
  16.  
  17. }


kado


Message édité par nraynaud le 13-05-2004 à 20:50:52

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

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!


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-05-2004 à 20:49:02    

Taz a écrit :

la vache tu bosses dans un labo :ouch:

il est cobaye là-bas ...


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

Marsh Posté le 13-05-2004 à 20:49:10    

Taz a écrit :

la vache tu bosses dans un labo :ouch:


 
J'ai honte  :sweat:

Reply

Marsh Posté le 13-05-2004 à 20:49:32    

Taz a écrit :

la vache tu bosses dans un labo :ouch:


 
ouai  :o  
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  :pfff:

Reply

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


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

Marsh Posté le 13-05-2004 à 20:51:35    

Giz a écrit :

ouai  :o  
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  :pfff:

si t'es capable d'assimiler un concept simple comme les interfaces, j'imagine le carton en C [:alphat]  
 
supair ton code :D

Reply

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.


Message édité par gfive le 13-05-2004 à 20:55:22
Reply

Marsh Posté le 13-05-2004 à 20:54:49    

nraynaud a écrit :

Code :
  1. public class ElitistAnt
  2. {
  3.   public int eval;
  4.   public int numAnt;
  5.                 public Comparator cmp = new Comparator ()
  6.                 {
  7.                     public int compare(Object o1, Object o2)
  8.                     {
  9.                             return ((ElitistAnt) o1).eval - ((ElitistAnt) o2).eval;
  10.                     }
  11.                 };
  12.   public static void eaSort (ElitistAnt[] ea)
  13.   {
  14.    Arrays.sort (ea, cmp);
  15.   }
  16.  
  17. }


kado


 
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 :


java.util  
 [g]Interface[/g] Comparator
 
 
All Known Implementing Classes:  
Collator  


 
je trouvais ma syntaxe de declaration de la classe elitistAnt normale !  :o

Reply

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  :pfff:


 
moi je dit vive les boulets qui font de la prog comme d'autre font de
la peinture en batiment ...  [:everything4free]

Reply

Marsh Posté le 13-05-2004 à 20:54:56    

bon allez, la charité
 

Code :
  1. public class ElitistAnt implements Comparable
  2.    {
  3.       public int eval;
  4.       public int numAnt;
  5.       public int compareTo(Object o)
  6.       { /* ton code de comparaison entre this et o */}
  7. } // et oui cai déjà fini
  8. ElitistAnt[] eants = /* */;
  9. Arrays.sort(eants);


 
on garde les subtilités pour ta puberté


Message édité par Taz le 13-05-2004 à 20:57:48
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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