test d'égalité

test d'égalité - Java - Programmation

Marsh Posté le 21-11-2005 à 21:16:04    

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?  

Reply

Marsh Posté le 21-11-2005 à 21:16:04   

Reply

Marsh Posté le 21-11-2005 à 21:39:11    

[: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
Reply

Marsh Posté le 22-11-2005 à 08:55:02    

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 !

Reply

Marsh Posté le 22-11-2005 à 14:55:06    

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)
Reply

Marsh Posté le 22-11-2005 à 16:36:32    

Trollable a écrit :

ou encore

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



Merci :jap:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 22-11-2005 à 16:42:23    

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

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed