Varible globaale

Résolu
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013 - 22 mai 2010 à 18:24
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 23 mai 2010 à 14:13
salut;
j'ai un problème dans l'initialisation d'une variable global utilisé par plusieurs utilisateur;
alors, la variable au début initialiser à 0(je ne sais pa ou je dois la déclarer);ensuite par chaque utilisateur cette variable doit etre incrémenter;
par exemple l'utilisateur 1 mis la variable a 1 un autre utilisateur prend cette valeur (1) est la incrémente ainsi de suite....
sachons que :cette variable est déclarer dans une autre classe et incrémenter dans une autre classe

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 mai 2010 à 14:13
Salut,

Tu as bien fait un copier/coller du code que je t'ai passé (en laissant tout en static) ?

Tu ne fais pas un setVariableGlobale(0) quelque part ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
3
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
22 mai 2010 à 18:26
help please!!
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
22 mai 2010 à 19:01
Salut,

Il n'est pas possible de faire des variables globales en java. Cependant, tu peux simuler une variable globale en faisant ainsi :

public static class ClasseGlobale {
  protected static Integer taVariableGloble = 0;
  public static void setVariableGlobale(Integer variableGlobale) {
    taVariableGlobale = variableGlobale;
  }
  public static Integer getVariableGlobale() {
    return taVariableGlobale;
  }
}


Et ainsi, de n'importe où dans ton code tu peux faire :
ClasseGlobale.setVariableGlobale(ClasseGlobale.getVariableGlobale());


Cependant, attention avec ce genre de variable : elles ont une durée de vie illimitée (tant que ton programme est lancé), et elles sont partagées entre toutes les instances de ClasseGlobale, donc si une instance modifie sa valeur, c'est répercuté dans toutes les autres instances !
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
22 mai 2010 à 19:05
merci beaucoup M.DARK , c 'est ça ce que cherche je vais essayer avec cette méthode
merçi
0

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

Posez votre question
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
23 mai 2010 à 11:51
bon j'ai essayé avec le code en haut mais ça reste le même problème!!
en faite ma classe et une formulaire de chat
donc pour chaque conecteur il s'affiche( formulaire)et utilise la valeur du variable globale qui a été modifier par un autre utilisateur ce n'est pas la valeur initial du variable globale et ainsi de suite;
	class TraitemmentButtonAction implements ActionListener{

public void actionPerformed(ActionEvent e){
if(e.getSource().equals(jbConnecter)){

if (e.getActionCommand().indexOf("Se conn")!=-1){
ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().getImage("src/images/edit_f2.png"));
String adrServeur=(String) JOptionPane.showInputDialog(null,"Entrer @IP du serveur SVP: ","@IP Serveur",1,image,null,"localhost");
client.setInetAddress(adrServeur);
client.setPort(9999);
client.setLogin(jtLogin.getText());

client.etablissementDeConnexion();
jtabClientConnecter.getSelectionModel().setSelectionInterval(0, 0);
System.out.println("1");
}
else{
System.out.println("2");


client.deconnecter();
}
}
else{

if(e.getSource().equals(jbEnvoier)){
pos=0;
client.setAdrIPDestination("tout");
client.setLoginDestination("tout");
int i=ClasseGlobale.getVariableGlobale();
                        System.out.println("val de i======"+i);
                        int j=i+1;
                        //ClasseGlobale.setVariableGlobale(ClasseGlobale.getVariableGlobale());


  /*modifier la valeur du variable globale   par j pour utilisation d'un autre apprenant ...*/                    ClasseGlobale.setVariableGlobale(j);
                        System.out.println("val de j======="+ClasseGlobale.getVariableGlobale());
                        

}
if(pos>=0){
client.setMsgE1(acte.getSelectedItem()+jtaSaisie.getText());

client.setTypeMsgE("s");
client.envoieMessage();
}
else{
ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().getImage("src/images/optionpane.warningicon.png"));
JOptionPane.showMessageDialog(null,"Il faut choisir un client","Attention...",JOptionPane.YES_OPTION,image);
}
}

if(e.getActionCommand().equalsIgnoreCase("bienvenue")){
new Bienvenue();
}

}



}
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
23 mai 2010 à 12:02
Salut,

ça reste le même problème


Quel problème ? Soit plus précis si tu veux de l'aide : je peux pas deviner les problèmes que tu rencontres. Est-ce que le code est bien exécuté (est-ce que tu passe bien dans le bout de code qui modifie la variable) ? Que t'affiche tes println dans la console ?
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
ghezella Messages postés 71 Date d'inscription mardi 3 novembre 2009 Statut Membre Dernière intervention 27 avril 2013
23 mai 2010 à 14:03
salut;
voici ce qui m'affiche dans le consol:
pour le premier utilisateur
1/
de i======0
val de j=======1
2/pour le dexieme utilisateur

de i======0
val de j=======1
il ya un ecrasement du valeur global normalemnt le deuxiem utilisateur m'affiche:
de i======1
val de j=======2
pour le 3eme
de i======2
val de j=======3

mais pour chak utilisateur il prend la valeur initial du variable global le zero!!!!
0
Rejoignez-nous