Aide java svp

Fermé
nicolas7474 - 3 déc. 2007 à 15:45
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 - 3 déc. 2007 à 20:44
Bonjour,
j'ai un problème en java: je récupère une valeur grâce à une boite de dialogue dans une classe main et je souhaiterai utiliser cette valeur dans une autre classe mais je ne sais pas comment faire! Le passage en paramètre n'est pâs adapté donc si vous avez une solution, n'hésitez pas!!

De plus, j'ai un deuxième problème: je désire stocké une suite de couple (nombre, booléen) dans une liste ou tout autre objet puis trié ces couples sur le nombre par ordre croissant afin de pouvoir enlever les booléens associés au nombre les plus grand. Je veux avoir une liste de couple trié par ordre croissant sur les nombre (sachant qu'un couple peut se reproduire plusieurs fois!)

en vous remerciant,

cordialement,
A voir également:

7 réponses

kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 déc. 2007 à 20:44
Je ne crois pas que tu as saisi tout ce que j'ai dit, ou je me suis peut etre mal exprimé.
Tu peux faire une classe bean nommée par exemple "Couple" dans laquelle tu stoke les valeurs (numéro + boolean) pour un couple. Ensuite, au lieu de remplir un tableau avec un numéro et un boolean, tu créé un objet "Couple" auquel tu "set" les propriétés 'numéro" et "bool", puis tu ajoute cet objet à ton arrayList. Tu fais ca pour tous les couples que tu désires enregistrer.

Ainsi tu te retrouve avec une arrayList d'objet 'Couple', il te reste à les trier, en parcourant ton arrayList, comparant les valeurs, déplacant les objets dans l'arrayList pour au final la trier correctement.

Voici en gros le code pour la construction de ton arrayList, et celui de la classe bean 'Couple' :
Classe Couple :
publi class Couple {
    private int num = 0;
    private boolean bool = false;

    // --- CLASS CONSTRUCTORS
    public Couple ( ){
       super();
    }
    public Couple ( int theNum, boolean theBool ){
       this();
       setNum(theNum);
       setBool(theBool);
    }

    // --- GETTERS & SETTERS
    public void setNum ( int theNum ){
       this.num = theNum;
    }
    public int getNum ( ){
       return this.num;
    }

    public void setBool ( boolean theBool ){
        this.bool = theBool;
    }
   public boolean isBool ( ){
       return this.bool;
   }
}


Extrait code remplissage d'une arrayList de 'Couple' :
ArrayList myList = new ArrayList();
for ( int i = 0; i < 10; i++ ){
     myList.add( new Couple(i, true) );
}


Ici, l'arrayList est remplie de couple ayant pour numéro la valeur de i (donc de 0 à 9), et pour boolean 'true'.
A toi d'adapter la facon dont tu veux remplir ta liste :)

Pour ce qui est du tri, un petit exemple :
public ArrayList sort ( ArrayList theList ){
   ArrayList myFinalList = new ArrayList ();
   Couple myTmpCouple = null;

  // --- Roll on input arrayList
  for ( int i = 0; i < theList.size(); i++ ){
      // --- Retrieve current couple
      myCouple = (Couple) theList.get(i);
      // --- Insert it in final arrayList in function of it 'num' value
      myFinalList = insertInto (myFinalList);
  }

  return myFinalList;
}

private ArrayList insertInto ( ArrayList theList, Couple theCoupleToInsert ){
    boolean found = false;
    int i = 0;
    Couple myC = null;

    while ( ! found && i < theList.size() ){
        myC = (Couple) theList.get(i);
        if ( theCoupleToInsert.getNum <= myC.getNum() ){
           // --- Insert theCouple before the one with 'num' value greater
           theList.add(theCoupleToInsert, i);
        }
    }
    // --- Treat the list with size 0, simply add the couple to insert at the first index
    if ( theList.size == 0 )
        theList.add(theCoupleToInsert);

    // --- Return the list with the couple inserted in
    return theList;
}


Voilà, c'est juste du code fait à l'arrache ici, donc faut vérifier s'il n'y a pas d'erreur de syntaxe, si ca fonctionne. En tout cas l'idée est là, à toi de l'adapter selon tes besoins.

3
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 déc. 2007 à 16:25
Solidatité Nicolas :)

Pour ce qui est de ta première question, outre le passage par paramètre tu peux peut être géré une variable de classe que tu set / get comme tu le veux depuis l'intérieur de ta classe, ou dans ton cas depuis l'extérieur. Cette solution est généralement adaptée si l'information que tu veux stockée est pertinente, mais tu peux toujours utiliser ce système pour "dépanner".

Pour la deuxième question, je te conseille d'utiliser une TreeMap, qui te permettra de trier automatiquement ta liste par odre croissant (alphabétiquement) sur ta clé.
Quésako ? Une treemap n'est autre qu'une hashmap sauf qu'elle se trie automatiquement lorsque tu y ajoute tes éléments.
Il ne te reste donc plus qu'à insérer tes numéro sous forme de string (un petit String.valueOf(monEntier) fera l'affaire. Inversement, si tu veux récupérer une clef de ta liste, il faudra que tu cast l'objet récupérer en String, puis obtenir sa valeur numérique en faisant :
Integer.valueOf(maClef).intValue();

Avec ca tu devrais pouvoir résoudre ton problème.
Bon courage.
0
je te remercie de ta réponse si rapide et claire. Je voulais juste savoir si en faisant avec une treemap, si je rencontre 2 entiers identiques, il ne va en stocker qu'un seul! or si dans ma liste j'ai (254, 255, 369, 254, 255) je veux que ma treemap ait une taille de 5 et non de 3! Tu pense que sa peut marcher comme tu me le dit?

en te remerciant encore,

cordialement
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 déc. 2007 à 17:43
Ha non effectivement, le problème des treemap c'est que la clef est unique. Donc si tu tente d'insérer une valeur avec une clef déjà existante, ca va écraser l'ancienne valeur. Ca ne règle donc effectivement pas ton problème...
Tu es donc obligé de faire un petit algo de tri pour classer correctement ton tableau.
Pour ca, un petit tri à bulle devrait faire l'affaire. Si tu ne connais pas regarde par là, tu as les différentes notions qui t'aideront à faire ce que tu veux : http://www.dailly.info/algorithmes-de-tri/index.php
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je te remercie encore de m'aider, c'est cool! donc il va falloir faire un tri mais dans quelle chose puis-je stocker mes couples?? parce que je veux qu'à un entier soit associer un booléen et que le trie des nombre implique un tri des booléen!

je ne sait pas avec quoi je peux stocker et donc sur quoi je dois effectuer le tri!

merci encore, he oui je rame un peu!!
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
3 déc. 2007 à 18:18
Ben, tu pourrais très bien faire une classe qui te serve justement de conteneur, une sorte de Bean.
Ta classe aurait donc pour propriété :
- un nombre
- un boolean
Et pour méthode tout ce qui faut pour setter / getter ces valeurs

Ensuite, tu peux stocker tous tes éléments dans une ArrayList, un tableau d'objet ou encore une List. Personnellement je prendrais une ArrayList car c'est plus "facile" à utiliser (pour moi).

Une fois le stockage fais, reste plus qu'une petite fonction qui tri, prenant en paramètre ton tableau / arrayList / autre, et retournant ce même élément mais trié.

Pour l'algo de tri je te laisse voir, tu peux toujours poser des questions et nous le mettre lorsque tu aura avancé dessus plus tard.
0
donc je dois faire une classe avec ses deux attributs et les méthodes qui vont bien, ça ça va! ensuite, le stockage dans une arraylist (je stocke le'entier et le booléen ou juste l'entier?), je le fais quand? (au fur et à mesure?) et où?(dans la classe conteneur ou dans la classe ou je récupère mes nombre et booléen?)

Idem, le tri, je le fais dans quel classe? au fur et à mesure?

je dois y aller, je vais essayer certaines choses ce soir et je verrai si j'y arrive mais je suis pas très otpimiste!!

enfin je te tiens au courant!
encore emrci et désolé d'être boulet!lol

bonne soirée
0