Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1219 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  test d'égalité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

test d'égalité

n°1250296
Farigo
Posté le 21-11-2005 à 21:16:04  profilanswer
 

Bonsoir
 
Comme vous pouvez vous en doutez, j'ai un petit problème avec une source, et comme tous les débutants, c'est sur des problèmes d'égalité   ^^
 
J'ai une classe qui me permet de stocker diverses infos dont entre autre:
 
class Table{
 
 private boolean connecte;
 
 public boolean estConnecte(){
  if (connecte)
   return true;
  else  
   return false;
   
 }
 
 public Table (int n, String i, int po, boolean c){
  this.num=n;
  this.ip=i;
  this.port=po;
  this.connecte=c;
  System.out.println("Client "+num+" ajoute a la table" );  
}
 
et quand je me sert de la classe dans,  j'ai un probleme (en fait j'en ai 2 ^^ )
 
class Client{
       Thread param;  
       public Client(){  
          //creation d'un vecteur qui contiendra les paramètre des clients
          v = new Vector();
 
          //ajout des 4 clients
   v.addElement (new Table(1,"127.0.0.1",5000,false));
   v.addElement (new Table(2,"127.0.0.1",6000,false));
   v.addElement (new Table(3,"127.0.0.1",7000,false));
   v.addElement (new Table(4,"127.0.0.1",8000,false));
 
   param = new Thread(this);
   param.run();  
       }
         
    public void run(){
      int i=0;
      Socket tmp=null;
      Table t;
      while (true){
       while (i<4){      //on parcours toutes les cases du vecteur  
        t=(Table)v.elementAt(i);   //recupération de l'élément courant de type Table
        if ((t.estConnecte()).equals(false)){ //si le client courant n'est pas déja connecte
         try{
          tmp=new Socket(t.getIp(),t.getPort()); //on cree une socket vers lui
         }
         catch (Exception e){};
         if (tmp != null){   //si cette socket est bien cree, c'est que le client est connecté
          t.setStatus(true);  //on change son statut
          i++;     //on passe au client suivant
         }
         System.out.println("Client n"+t.getNum()+" ip: "+t.getIp()+" port: "+t.getPort()+" pseudo: "+t.getPseudo()+" connecte?: "+t.estConnecte());
           
        }
        else        //s'il est déja connecté
         i++;      //on passe au client suivant
       }
      try{
        param.wait(500);     //on attend 500ms avant de boucler
       }
       catch (InterruptedException ex){
        ex.printStackTrace();
       }
      }
             
     }
}  

Citation :

if ((t.estConnecte()).equals(false))


 
Le probleme est la:
Quand je compile, j'ai un message qui me dit "boolean cannot be dereferenced".  
J'ai regardé un peu sur le net ce que je pouvais trouver et j'ai vu ca http://forums.java.sun.com/thread. [...] ID=3964338. Si j'ai bien compris, je peux pas utiliser la fonction equals() sur false puisque c'est un type primitif et qu''il n'a pas de methode.  
Je peux pas utiliser non plus == puisque ca compare les références... bon, j'ai quand même essayé et effectivement, ca marche pas  :lol:  
 
du coup, comment je fais?  :pt1cable:  
 

Citation :

      param.wait(500);


 
Mon autre problème se situe au niveau du wait, même si la je dois avouer que j'ai pas encore trop cherché. Quand je lance le fichier, il me met  
"Exception in thread "main" java.lang.IllegalMonitorStateException: current thread not owner"
 
Il me semble avoir vu que pour seul le proprietaire du thred peut lancer la methode wait, mais si param n'est pas proprietaire, qui l'est?  

mood
Publicité
Posté le 21-11-2005 à 21:16:04  profilanswer
 

n°1250313
masklinn
í dag viðrar vel til loftárása
Posté le 21-11-2005 à 21:39:11  profilanswer
 

[:mlc]
 
Manquent les bases de Java là, je te conseille de tout reprendre du début [:spamafote]
 
Un type primitif n'est jamais passé en argument par référence, toujours pas valeur. L'inverse pour les objets.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1250497
vb11
Posté le 22-11-2005 à 08:55:02  profilanswer
 

Ta classe Client doit implémenter Runnable.
Pour le test d'égalité c'est :

Code :
  1. if( t.estConnecte() == false)


comme le dit masklinn, commence par apprendre les bases !

n°1250745
Trollable
Posté le 22-11-2005 à 14:55:06  profilanswer
 

vb11 a écrit :

Code :
  1. if( t.estConnecte() == false)



 
ou encore

Code :
  1. if(!t.estConnecte())



---------------
The Million Dollar Screenshot  (seo v7ndotcom elursrebmem paesys wifi)
n°1250835
sircam
I Like Trains
Posté le 22-11-2005 à 16:36:32  profilanswer
 

Trollable a écrit :

ou encore

Code :
  1. if(!t.estConnecte())



Merci :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
n°1250842
Bidem
Posté le 22-11-2005 à 16:42:23  profilanswer
 

Et c'est plus rapide/propre/intelligent de faire ça :
 

Code :
  1. public boolean estConnecte(){
  2.   return connecte;
  3. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  test d'égalité

 

Sujets relatifs
Test image présente ou non.[vbs] Test d'existance de fichier
[QST] sql.free.fr + grant ? test de phpgroupware..VBA : Test d'application ouverte
Utilisation testTest application lancée (débutant)
[PHP] Test: Jeu de Carte: Manille en PHP + AJAX[Korn Shell] Test d'égalité
[ASP] Bizarrerie sur le test d'égalité dans un if ? [résolu] 
Plus de sujets relatifs à : test d'égalité


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR