Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2738 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [java] probleme de newbie (tri de tableau)

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[java] probleme de newbie (tri de tableau)

n°725068
Giz
Posté le 13-05-2004 à 18:56:22  profilanswer
 

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

mood
Publicité
Posté le 13-05-2004 à 18:56:22  profilanswer
 

n°725081
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:00:23  profilanswer
 

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é

n°725086
Giz
Posté le 13-05-2004 à 19:03:14  profilanswer
 

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

n°725091
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:11:29  profilanswer
 

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

n°725098
Giz
Posté le 13-05-2004 à 19:17:47  profilanswer
 

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 ?

n°725103
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:21:28  profilanswer
 

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

n°725111
nraynaud
lol
Posté le 13-05-2004 à 19:27:24  profilanswer
 

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
n°725113
Giz
Posté le 13-05-2004 à 19:28:46  profilanswer
 

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
n°725114
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:29:07  profilanswer
 

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

n°725116
nraynaud
lol
Posté le 13-05-2004 à 19:31:38  profilanswer
 

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
mood
Publicité
Posté le 13-05-2004 à 19:31:38  profilanswer
 

n°725127
Giz
Posté le 13-05-2004 à 19:42:00  profilanswer
 

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]

n°725128
the real m​oins moins
Posté le 13-05-2004 à 19:42:47  profilanswer
 

bon, je délate. ras le cul.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°725129
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:43:54  profilanswer
 

coup de latte ?

n°725131
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:44:15  profilanswer
 

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

n°725135
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-05-2004 à 19:45:40  profilanswer
 

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.
n°725137
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:47:25  profilanswer
 

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

n°725143
Giz
Posté le 13-05-2004 à 19:51:37  profilanswer
 

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

n°725146
Taz
bisounours-codeur
Posté le 13-05-2004 à 19:55:08  profilanswer
 

un cerveau ?

n°725148
Giz
Posté le 13-05-2004 à 19:57:58  profilanswer
 

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 ?

n°725150
Taz
bisounours-codeur
Posté le 13-05-2004 à 20:00:06  profilanswer
 

...

n°725151
nraynaud
lol
Posté le 13-05-2004 à 20:01:02  profilanswer
 

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
n°725153
Giz
Posté le 13-05-2004 à 20:01:36  profilanswer
 


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

n°725154
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-05-2004 à 20:06:10  profilanswer
 

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.
n°725156
Giz
Posté le 13-05-2004 à 20:08:47  profilanswer
 

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
n°725166
Taz
bisounours-codeur
Posté le 13-05-2004 à 20:28:26  profilanswer
 

Giz a écrit :

moi j'ai choisi la methode comparator pour trier mes objets ElitistAnt...il faut que j'utilise comparable.

ta gueule :o

n°725170
nraynaud
lol
Posté le 13-05-2004 à 20:29:43  profilanswer
 

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
n°725178
Giz
Posté le 13-05-2004 à 20:36:51  profilanswer
 

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!

n°725181
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-05-2004 à 20:40:16  profilanswer
 

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.
n°725184
Taz
bisounours-codeur
Posté le 13-05-2004 à 20:46:14  profilanswer
 

la vache tu bosses dans un labo :ouch:

n°725187
nraynaud
lol
Posté le 13-05-2004 à 20:48:12  profilanswer
 

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
n°725188
the real m​oins moins
Posté le 13-05-2004 à 20:49:01  profilanswer
 

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 ?
n°725189
nraynaud
lol
Posté le 13-05-2004 à 20:49:02  profilanswer
 

Taz a écrit :

la vache tu bosses dans un labo :ouch:

il est cobaye là-bas ...


---------------
trainoo.com, c'est fini
n°725190
Joel F
Real men use unique_ptr
Posté le 13-05-2004 à 20:49:10  profilanswer
 

Taz a écrit :

la vache tu bosses dans un labo :ouch:


 
J'ai honte  :sweat:

n°725191
Giz
Posté le 13-05-2004 à 20:49:32  profilanswer
 

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:

n°725193
nraynaud
lol
Posté le 13-05-2004 à 20:51:35  profilanswer
 

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
n°725194
Taz
bisounours-codeur
Posté le 13-05-2004 à 20:51:35  profilanswer
 

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

n°725195
gfive
Posté le 13-05-2004 à 20:51:52  profilanswer
 

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
n°725199
Giz
Posté le 13-05-2004 à 20:54:49  profilanswer
 

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

n°725200
Joel F
Real men use unique_ptr
Posté le 13-05-2004 à 20:54:49  profilanswer
 

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]

n°725201
Taz
bisounours-codeur
Posté le 13-05-2004 à 20:54:56  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [java] probleme de newbie (tri de tableau)

 

Sujets relatifs
probleme de confirmationJAVA - java.lang.OutOfMemoryError
[XHTML / CSS] problème d'alignement horizontal [Résolu][PHP-Sogenactif] Probleme de passage de variables de sessions [resolu]
Affichage requete dans un tableau avec selecteur[VB] Problème oo4o et Visual Studio .net
[CGI] Encore du nouveau : probleme avec formulaire[Java] Je cherche un soft gratuit d'analyse des classes
Probleme avec Auto openProblème de sécurité du navigateur
Plus de sujets relatifs à : [java] probleme de newbie (tri de tableau)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR