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 :

Problème de classe


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut Problème de classe
    Bonjour
    Je n'arrive pas à modifier les variables d'instances de l'une de mes classes depuis une autre de mes classes, et je n'arrive pas non plus à exécuter les autrs méthodes de ma classe

    Est ce que vous pouvez me donner la syntaxe type de ce genre de code
    Merci beaucoup
    peut être que ce problème vient de ma classe ? Mais alors je ne sais pas ce que c'est..

    Voilà ma classe
    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
    48
    49
    50
    51
    package Joueur;
     
    import java.util.ArrayList;
     
    import carte.CartePersonnage;
    import carte.CarteQuartier;
     
    public class Joueur {
     
    //Classe modélisant les joueurs, définis par leur nom, leur personnage et leur or.
    //Comme un même joueur à plusieurs personnages, il faudra sans doute faire apparaître l'objet personnage courant
     
    	public String nom ;
    	private String personnage;
    	private int or;
    	private ArrayList<CarteQuartier> mainDuJoueur;
     
    	Joueur(String nom, String personnage, int or, ArrayList<CarteQuartier> mainDuJoueur) {
    this.set(nom,personnage,or,mainDuJoueur);
    	}
     
    	public void set(String nom, String personnage,int or,ArrayList<CarteQuartier> mainDuJoueur){
    		this.nom=nom;
    		this.personnage=personnage;
    		this.or=or;
    		this.mainDuJoueur=mainDuJoueur;
    	}
     
    	public String getNom(){
    		return this.nom;
    	}
     
    	public String getPersonnage(String nom){
    		return this.personnage;
    	}
     
    	public int getOr(String nom){
    		return this.or;
    	}
     
    	public String getMainDuJoueur(ArrayList<CarteQuartier> mainDuJoueur){
    		String CarteEnMain="";
    		int i ;
    		for(i=0;i<mainDuJoueur.size();i++){
    			CarteEnMain ="\n"+CarteEnMain+"\n"+mainDuJoueur
    			.get(i);
    		}
    		return CarteEnMain;
    	}
     
    }
    et je veux par exemple changer le nom d'un joueur et l'afficher

    Merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Par défaut
    Tes getters et setters ne sont pas très clair... normalement un getter n'a aucun paramétre. regarde par exemple ta méthode getPersonnage ne sert pas du paramétre "nom" que tu lui passes. Je te conseille de mettre tout tes attributs en private et de faire ensuite des getters/setter pour chacun d'eux de manière automatique (j'imagine que tu utilises un ide genre eclipse => menu source-> generate getters and setters)
    Bien sur tu peux laisser ta méthode getMainDuJoueur comme tu le souhaite pour récupérer une string formaté.
    Après tu devrais pouvoir accéder à tes attributs avec ces méthodes simplement si tu es dans le package Joueur(si tu es dans un autre package, fais un simple import du package Joueur)

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    OK
    Je vais enlever les paramètre pour les getter.
    Mais comment est ce que tu fais pour changer une variable quand tu te trouves dans une autre classe?

    par exemple, je veux créer un Joueur : joueur1 avec un nom, un personnage ,de l'or et une main.

    J'ai essayé plusieurs truc mais ça ne marche pas
    le truc qui me semble le plus juste, c'est ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Joueur joueur1=new Joueur(nomDuJoueur1,assassin,2,mainDuJoueur1);
    pour que ça marche j'ai changer l'accessibilité de Joueur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Joueur(String nom, String personnage, int or, ArrayList<CarteQuartier> mainDuJoueur) {
    this.set(nom,personnage,or,mainDuJoueur);
    	}
    ça marche mais eclipse me met un message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 70, Size: 70
    	at java.util.ArrayList.RangeCheck(Unknown Source)
    	at java.util.ArrayList.remove(Unknown Source)
    	at Jeu.Moteur.main(Moteur.java:230)
    Est ce que vous savez ce qui ne va pas?


    MERCI

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 165
    Par défaut
    alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Joueur joueur1=new Joueur(nomDuJoueur1,assassin,2,mainDuJoueur1);
    te crée un objet joueur1 de la classe Joueur, je vois pas le probléme.
    Pour ta question : "comment est ce que tu fais pour changer une variable quand tu te trouves dans une autre classe" : et bien une fois que tu as ton objet joueur1, il te suffit d'accéder/modifier ses propriétés grâce aux méthodes getters/setters (il faut bien sur que tu aies rajouter les setXXX() adéquats dans ton code): par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    joueur1.setNom("babar");
    Concernant ton erreur, il te dit que tu essaies d'acceder à un element de ta liste qui n'existe pas (tu essaies d'accéder à l'élement 71 (index 70, mais on part de 0) alors que ta liste n'en contient que 70 (size 70)). si tu veux de l'aide pour ça, donne la trace compléte (je ne peux pas savoir quel ligne génére cette exception)

  5. #5
    Membre expérimenté Avatar de vincent63
    Inscrit en
    Octobre 2005
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 198
    Par défaut
    A tout hasard, ça ne serait pas le jeu citadelles que tu essaies de coder?

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    OK
    Je vais enlever les paramètre pour les getter.
    Mais comment est ce que tu fais pour changer une variable quand tu te trouves dans une autre classe?

    par exemple, je veux créer un Joueur : joueur1 avec un nom, un personnage ,de l'or et une main.

    J'ai essayé plusieurs truc mais ça ne marche pas
    le truc qui me semble le plus juste, c'est ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Joueur joueur1=new Joueur(nomDuJoueur1,assassin,2,mainDuJoueur1);
    pour que ça marche j'ai changer l'accessibilité de Joueur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Joueur(String nom, String personnage, int or, ArrayList<CarteQuartier> mainDuJoueur) {
    this.set(nom,personnage,or,mainDuJoueur);
    	}
    ça marche mais eclipse me met un message d'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 70, Size: 70
    	at java.util.ArrayList.RangeCheck(Unknown Source)
    	at java.util.ArrayList.remove(Unknown Source)
    	at Jeu.Moteur.main(Moteur.java:230)
    Est ce que vous savez ce qui ne va pas?


    MERCI

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    il s'agit bien du jeu citadelles!!

    Au fait est il normal d'avoir été obligé de changer l'accessibilité de Joueur?

  8. #8
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Ca sert a rien de poster 2 fois le meme message à une heure d'intervale, le premier message suffit largement.

    eatherquake t'a très bien répondu !!!

    Pour ta question : "comment est ce que tu fais pour changer une variable quand tu te trouves dans une autre classe" : et bien une fois que tu as ton objet joueur1, il te suffit d'accéder/modifier ses propriétés grâce aux méthodes getters/setters (il faut bien sur que tu aies rajouter les setXXX() adéquats dans ton code): par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    joueur1.setNom("babar");
    Concernant ton erreur, il te dit que tu essaies d'acceder à un element de ta liste qui n'existe pas (tu essaies d'accéder à l'élement 71 (index 70, mais on part de 0) alors que ta liste n'en contient que 70 (size 70)). si tu veux de l'aide pour ça, donne la trace compléte (je ne peux pas savoir quel ligne génére cette exception)

  9. #9
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Merci bcp
    maintenant je pense que je vais pouvoir me débrouiller tout seul

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

Discussions similaires

  1. Problème de classe.
    Par maminova77 dans le forum Langage
    Réponses: 5
    Dernier message: 30/01/2006, 21h39
  2. Problème sur classe Transformer avec les <!--
    Par tykool dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2006, 10h20
  3. Problème de classe
    Par DeusXL dans le forum DirectX
    Réponses: 15
    Dernier message: 04/12/2005, 14h37
  4. Problème de classe
    Par tidou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 14/10/2005, 17h49
  5. [FLASH MX2004] Problème de classe
    Par JulPoWeR dans le forum Flash
    Réponses: 1
    Dernier message: 10/07/2005, 22h51

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