IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Instancier 2 objets


Sujet :

avec Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut Instancier 2 objets
    Bonjour tout le monde

    Je cherche le moyen d'instancier plusieurs objets dans une méthode selon le choix de l'utilisateur de mon application. C'est à dire j'ai une classe "Joueur" et une classe "Resultat". J'ai une méthode "nbJoueur" avec un int en paramètre d'entrée et une boucle a l'intérieur de celle ci qui me permet de spécifier le nombre de joueur.

    Celle ci ressemble a ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void nbJoueur(int nbre){
            for(int i=0;i<nbre;i++){
                Joueur m1 = new Joueur("","",false);
            }
    }
    Mon problème est que si l'utilisateur choisie 2 ou 3 utilisateur, je dois arriver à instancier plusieurs fois de cette façon:

    Joueur m1 = new Joueur("","",false);
    Joueur m2 = new Joueur("","",false);
    Joueur m3 = new Joueur("","",false);

    car dans ma classe resultat, je récupère les déclarations m1,m2 et m3 pour exploiter et comparer les différents resultats de chaque joueur.

    Comment pourrais je faire m1,m2,m3 dynamiquement selon le nombre de joueur créé ?

    Merci votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Par défaut
    bonjour,
    pourquoi ne pas stocker tes joueurs instanciés dans un vector du coup ta méthode deviendrait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //creation du vector de joueurs
    private Vector<Joueur> tabJoueur;
    /*
    ton code
    */
    public void nbJoueur(int nbre){
    tabJoueur=new Vector()
            for(int i=0;i<nbre;i++){
                Joueur m1 = new Joueur("","",false);
                tabJoueur.add(m1);
            }
    }
    du coup tu pourras par la suite modifier tes objets Joueur au cours de la partie.
    Je ne sais pas si cette solution est optimale mais au moins ça te permettra de faire ce que tu veux ^^

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Donc en faisant ça je crée un sorte de tableau ou je place mes joueurs à l'interieur de celui là.

    Mais comment je peux par la suite exploiter mes joueurs ?

    En utilisant tabJoueur[0],tabJoueur[1]...?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Par défaut
    tu passes soit par un tableau soit par un vector.

    pour la récupération du Joueur dans le vector la méthode à appeler est .elementAt(index_voulu) sachant qu'un vector comme un tableau commence par l'index 0. et en plus le vector te renverra un objet Joueur
    en gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Joueur j=tabJoueur.elementAt(1)
    te renverra le 2ieme joueur et tu pourras appeler l'ensemble des méthodes de Joueur
    Bon courage

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Déjà Merci pour ton aide

    Je commence a comprendre l'utilisation des vecteurs. Par contre, jest ce qu'il aurait une methode pour faire le tri de mon vecteur ?

    J'ai regardé sur la javadoc http://java.sun.com/j2se/1.4.2/docs/...il/Vector.html mais je n'ai pas trouvé. Débutant avec Java, je préfere demander ?

    Est ce que tu peux me dire en deux mots la différence entre utilisé un tableau, un vecteur ou un arraylist. J'ai cru comprendre c'etait selon si nous connaissions les dimensions de notre tableau ou pas...

    Merci pour de ton aide

  6. #6
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Vector est déprécié...

    ArrayList ou LinkedList est un meilleur choix

    PS: pour les tris, java.util.Collections#sort

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Désolé mais qu'est ce que tu entends par déprécié ??

  8. #8
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    déprécié => déconseillée, car obsolète

    En fait j'ai regardé la doc, vector n'est pas vraiment déprécié, mais je le déconseille quand même car c'est une classe héritée des vieilles versions de java, et de plus est synchronisé donc plus lent que d'autres implémentations telles que ArrayList


  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Super merci pour toutes ces infos.

    Ca m'aide beaucoup

  10. #10
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Par défaut
    Citation Envoyé par Pill_S Voir le message
    déprécié => déconseillée, car obsolète

    En fait j'ai regardé la doc, vector n'est pas vraiment déprécié, mais je le déconseille quand même car c'est une classe héritée des vieilles versions de java, et de plus est synchronisé donc plus lent que d'autres implémentations telles que ArrayList

    ça me rassure que Vector ne soit pas déprécié mais en ce qui concerne ArrayList je l'accorde elle est plus rapide que Vector (mais j'ai tellement l'habitude avec les vector que je les utilise par réflexe )

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Ca fait un bon moment que je cherche mais je ne trouve pas la solution. Je veux faire un tri sur mes valeurs de résultats que mes joueurs obtiennent à mon jeux.

    Est ce que quelqu'un s'aurait d'ou vient l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package blackjack;
     
    import cnam.util.Console;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
     
    class ActionBlackJackHumain implements Comparable {
     
        private List<BlaclJack> tabBlaclJack;
        private int nbJ;
        private int nbRes2;
     
        public ActionBlackJackHumain() {
            nbJ=Console.readInt4("Combien de joueur participera à cette partie : ");
            nbJoueur(nbJ);
            Collections.sort(tabBlaclJack);
            resultatFinal();
        }
     
        public void nbJoueur(int nbre){
            tabBlaclJack=new ArrayList();
            for(int i=0;i<nbre;i++){
                BlaclJack bjK= new BlaclJack("","",false);
                tabBlaclJack.add(bjK);
            }
        }
     
        public void resultatFinal(){
           for(int i = 0; i < tabBlaclJack.size(); i++)
                {
                    System.out.println("******************************************************");
                    BlaclJack TabB=tabBlaclJack.get(i);
                    System.out.println("RESULTATS des joueurs : \""+ TabB.nom+"\" \""+ TabB.prenom +"\" avec comme resultat final : "+TabB.resInter);
                    System.out.println("******************************************************");
                    nbRes2 = TabB.getResInter();
                }
       }
     
        public int compareTo(Object o) {
            int nbRes1 = ((BlaclJack) o).getResInter();
            if(nbRes1>nbRes2)return -1;
            else if(nbRes1 == nbRes2) return 0;
            else return 1;
        }
     
    }
    J'ai une classe blackJack, joueur et celle-ci ActionBlackJackHumain. Ce qui fait ActionBlackJackHumain appel blackJack qui appelle joueur.

    Je veux faire un tri avec les resultats que je reçois. C'est la variable resInter qui correspond à mes resultats.

    Je n'ai aucune erreur a part avec cette ligne:
    Collections.sort(tabBlaclJack);

    Il souligne le mot "tabBlaclJack". Je n'ai pas d'erreur pourtant avec ma methode compareTo.

    Je vois pas le probleme ?

  12. #12
    Membre averti
    Inscrit en
    Mars 2005
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 46
    Par défaut
    Je ne suis pas vraiment expert, mais je pense que le problème vient de ton if dans la méthode compareTo. Je crois que le ; cause ce problème, est-ce que tu peux essayer avec une syntaxe plus claire? du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(nbRes1>nbRes2) {return -1} else {if(nbRes1 == nbRes2) {return 0} else {return 1}
    Pas trop clair sur une seule ligne, mais l'idée est là

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Non ce n'est pas ça. Ca marche pas

    Merci quand meme

  14. #14
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    bonjour,

    L'erreur vient du fait, que c'est la classe 'BlaclJack' qui doit implémenter l'interface Comparable et donc la méthode CompareTo, et pas la classe ActionBlackJackHumain.

    a+

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Citation Envoyé par eric39 Voir le message
    bonjour,

    L'erreur vient du fait, que c'est la classe 'BlaclJack' qui doit implémenter l'interface Comparable et donc la méthode CompareTo, et pas la classe ActionBlackJackHumain.

    a+
    Merci je n'ai plus d'erreur mais ca ne fait aucun tri

    Je dois faire encore une erreur. Comme tu me l'as dit j'ai implémenter l'interface Comparable et insrére la méthode CompareTo dans ma classe BlackJack.

    J'ai gardé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Collections.sort(tabBlaclJack);
    dans la classe ActionBlackJackHumain qui a pour fonction de me donner le resultat de chaque joueur dans une partie.

    Donc pas d'erreur mais aucun tri. Est ce que tu saurais ce qui me manque ??

    Merci

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 177
    Par défaut
    Je n'ai plus d'erreur mais je croyais que cela fonctionnait pas mais ce n'est pas le cas.

    un GRAND MERCI a toi. C'est vraiment stupide comme erreur

    Par contre une derniére chose, je crois qu'il y a un mot-clés pour faire du grand au plus petit ??

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Reflection] Instancier un objet
    Par bl@st dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 28/10/2008, 11h09
  2. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  3. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  4. Réponses: 6
    Dernier message: 18/01/2006, 16h26
  5. instancier un objet Excel
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 13/12/2005, 15h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo