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

Langage Java Discussion :

Demande d'aide sur un code JAVA


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 30
    Points
    30
    Par défaut Demande d'aide sur un code JAVA
    Bonjour


    Je travail sur un projet que je dois rendre.
    J'ai taper un code voir ci dessous en utilisannt une liste chainée. Cependant lorsque je souhaite afficher le contenu du tableau (ref.tab[0], ref.tab[1]) de ma liste chainée, j'ai l'impression que chaque élément pointe sur le meme objet.
    Je ne suis pas arrivé a trouver ou cela cloché.
    Si une personne pouvait regarder et me dire ou est le problème

    Je vous remercie d'avance

    Salutations


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public class Joueurs{ // definition des joueurs 
    String nomjoueur;// nom du joueur
     int [] jet; //jeton  du  joueur 
    int  carte1,carte2;
    int[]tab = new int[2];
    Joueurs suivant;//pointeur
    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
     
    class listejoueur{// liste chaine des joueurs
    	Joueurs premier, dernier ,ref1 ,ref,pointeur; // deifinition des pointeurs
    	// ajouter les joueurs en fin  de liste
    public void ajouterfin(String nom, int[] jet){
    Joueurs ref=premier;// je pointe en debut de liste
     
    if (premier==null){	premier=new Joueurs (nom, jet, pointeur,table);  ref=premier; dernier=premier;}//si liste chainée  vide
    else {dernier.suivant=new Joueurs(nom, jet, pointeur,table); dernier=dernier.suivant;}/* si liste chainé contient des éléments ajouter en fin de liste*/
    }		 
     
    //distribution des cartes au joueurs
    public listejoueur distribution(listejoueur liste){
     
    ref=liste.premier;
     
    while (ref!=null){
    ref.tab[0]= (int)(Math.random()*52);
     
    ref.tab[1]= (int)(Math.random()*52);
     
    ref=ref.suivant;
    }ref=liste.premier;
    while(ref!=null){
    	Terminal.ecrireIntln(ref.tab[0]);
    	ref=ref.suivant;
     
    }}
    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
    class initialisation {
        static	int nbJoueur;//nb de joueur participant au jeu
    	static String nomJoueur; // nom des joueur
    	static int gain=0;//gain des joueur
    	int[] jet={100,120};//Jetons des joueurs 
    	int[] lj={};
    	JeuxCarte car=new JeuxCarte();// Paquet de carte 
       	static InterfacePoker ti;
       	misedesjoueurs mise;
       	listejoueur liste;
     
     
     
    //Initialisation de la fenetre 	
    public	static void init(){
    	Terminal.ecrireStringln("BIENVENUE AU JEU DE POKER");
    	Terminal.sautDeLigne();
    	Terminal.ecrireString("Veuillez entrer le nombre de joueur  ");
    	nbJoueur=Terminal.lireInt();
    	Terminal.sautDeLigne();
     
    	//declaration et Initialisation  des joueurs,  du Joueur Humain et du Jeux de carte
    	public  void declarationjoueur (){
          liste=new listejoueur();
           for (int i=1; i<=nbJoueur;i++ ) {     
         Terminal.ecrireString("Le nom du joueur "+i+"  ");
          nomJoueur=Terminal.lireString();
          liste.ajouterfin(nomJoueur, jet);
          ti.declareJoueur(nomJoueur, jet);  }
          ti.fixeJeuHumain(lj);
          ti.fixeJetonsHumain(jet);
          car.Initialisation();
         } //initialisation du jeux de carte 
     
    //distributions des cartes
    public void distribution(){
    liste.distribution(liste);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Projet {
     
       public static void main(String[] args) {
     
     initialisation ru=new initialisation();
     
     ru.init();
     ru.declarationjoueur();
     ru.afficheFen();
     ru.distribution();
    }}

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Salut.

    Plusieurs remarques.

    dans ta méthode "déclarationJoueurs" tu fais appel au constructeur listejoueur qui n'existe pas. à partir de là je ne vois pas comment ça peut fonctionner.

    Ensuite: tu ne codes pas du tout orienté objet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dernier.suivant=new Joueurs
    Pour rappel, les attributs de tes classes doivent être privés et tu dois faire appel à des getteurs pour les récupérer.

    Par ailleurs tu déclares tes attributs sans rien devant, et si mes souvenirs sont bon ceux-ci seront donc considérés comme protégés. je ne vois pas non plus comment tu peux faire appel directement à tes attributs.

    Je te conseille d'utiliser un IDE tel qu'Eclipse pour coder et non pas un simple éditeur de texte sans correcteur. Pour débuter c'est vraiment mieux.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 30
    Points
    30
    Par défaut Re
    Bonjour

    Merci pour la réponse.
    Pour info la liste chainé fonctionne quand la variable tab est un int ou string. mais des que cela devient un tableau exemple type int[] on dirait que tous les éléments de la liste chainée pointent sur un seul et même objet.

    Pourrais tu me donner plus d'info sur la notion de getteur.

    Salutations

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    c'est parce que tu utilise effectivement le même tableau partout, qui est le tableau que t'as déclaré dans ta classe initialisation.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 30
    Points
    30
    Par défaut RE
    bonjour

    merci pour la reponse.
    mais ce que je ne comprends pas c'est quand je transforme la variable tab en string ou en int... le problème est résolu mais des que tab est def comme un tableau et bien tous les pointeurs pointent sur un tableau unique.

    merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    parce que tu n'instancie qu'un seul tableau. Si tu ne fait pas un new à chaque fois pour avoir un nouveau tableau, chaque noeud utilisera le meme tableau. Les tableaux java sont comme des objets. Quand tu fais

    avec jet de type int[], tu ne copie que la référence au tableau, pas son contenu.


    alors que quand tu fais ça avec un int, tu copie la valeur du int.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 37
    Points : 30
    Points
    30
    Par défaut RE
    OK j'ai compris. Merci beaucoup pour pour le conseil.

    Salutations

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

Discussions similaires

  1. Demande d'aide sur mon code en C
    Par tekos22 dans le forum Débuter
    Réponses: 7
    Dernier message: 31/12/2009, 10h08
  2. demande d'aide sur les APIs java win32
    Par mogo062 dans le forum Entrée/Sortie
    Réponses: 0
    Dernier message: 18/02/2009, 14h25
  3. demande d'aide sur un code de KSH
    Par adil.N dans le forum Linux
    Réponses: 1
    Dernier message: 08/05/2008, 21h42
  4. Demande d'aide sur mon code
    Par b.soufiane dans le forum C++
    Réponses: 6
    Dernier message: 07/12/2007, 16h36
  5. Demande d'aide sur un code source
    Par Soward dans le forum SDL
    Réponses: 3
    Dernier message: 13/06/2007, 20h22

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