J ARRIVE PAS TROUVER L ERREUR
Résolu
eleveing
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
eleveing Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
eleveing Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
BONJOUR TOUT LE MONDE!!
svp, j arrive pas a trouver l erreur dans les 2 lignes en bas que j ai precise!!merci de m aider!!
public class Ballon {
public String nom;
public int x;
public Ballon(String n,int a){
nom=n;
x=a;
}
public String toString(){return("<"+nom+">x="+x);}
public void deplacer(int o){x=x+o;}
class Joueur extends Thread {
public Ballon monBallon;
public int offset ;
public int periode;
public String nom;
public Joueur(Ballon b,int o,int p,String n)
{
monBallon=b;
offset=o;
periode=p;
nom=n;
}
public String toString()
{
return("{+nom+}"+offset+""+periode);
}
public void run(){
while(true) monBallon.prendre_donner(this);
}
}
public synchronized void prendre_donner(Joueur j){
/*System.out.println(j+"demende le ballon"+this);
this.wait();*/
System.out.println(j+"possed le ballon");
deplacer(j.offset);
j.sleep(j.periode*1000);
this.notify();
System.out.println(j+"lachele ballon");
deplacer(j.offset);
j.sleep(j.periode*1000);
this.notify();
System.out.println(j+"ballon"+this);
}
/*public synchronised void donner(){
* System.out.println("ballon"+this+"donne");
* this.notify();
* }
*/
}
public class test {
public static void main(String args[]){
Ballon a=new Ballon("adidas",0);
//VOILA LES 2 LIGNES OU JE CHECHE L ERREUR//
Joueur gauche=new Joueur(a,7,7,"zidane");
Joueur droite=new Joueur(a,5,5,"ronaldo");
gauche.start();
droite.start();
Thread.sleep(5*1000);
//aa.donner();
}
}
svp, j arrive pas a trouver l erreur dans les 2 lignes en bas que j ai precise!!merci de m aider!!
public class Ballon {
public String nom;
public int x;
public Ballon(String n,int a){
nom=n;
x=a;
}
public String toString(){return("<"+nom+">x="+x);}
public void deplacer(int o){x=x+o;}
class Joueur extends Thread {
public Ballon monBallon;
public int offset ;
public int periode;
public String nom;
public Joueur(Ballon b,int o,int p,String n)
{
monBallon=b;
offset=o;
periode=p;
nom=n;
}
public String toString()
{
return("{+nom+}"+offset+""+periode);
}
public void run(){
while(true) monBallon.prendre_donner(this);
}
}
public synchronized void prendre_donner(Joueur j){
/*System.out.println(j+"demende le ballon"+this);
this.wait();*/
System.out.println(j+"possed le ballon");
deplacer(j.offset);
j.sleep(j.periode*1000);
this.notify();
System.out.println(j+"lachele ballon");
deplacer(j.offset);
j.sleep(j.periode*1000);
this.notify();
System.out.println(j+"ballon"+this);
}
/*public synchronised void donner(){
* System.out.println("ballon"+this+"donne");
* this.notify();
* }
*/
}
public class test {
public static void main(String args[]){
Ballon a=new Ballon("adidas",0);
//VOILA LES 2 LIGNES OU JE CHECHE L ERREUR//
Joueur gauche=new Joueur(a,7,7,"zidane");
Joueur droite=new Joueur(a,5,5,"ronaldo");
gauche.start();
droite.start();
Thread.sleep(5*1000);
//aa.donner();
}
}
A voir également:
- J ARRIVE PAS TROUVER L ERREUR
- Trouver adresse mac - Guide
- Comment trouver le mot de passe wifi sur son téléphone - Guide
- Ou trouver l'adresse ip - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
- Trouver mon adresse exacte - Guide
2 réponses
La classe Joueur est définie À L'INTÉRIEUR de la classe Ballon, elle est donc attachée aux objets de cette classe. Donc deux solutions :
1) Tu déclares la classe Joueur en dehors de la classe Ballon (conseillé ici)
2) Tu crées tes joueurs en utilisant l'objet Ballon 'a' comme ceci :
Remarque : dans ce cas, le paramètre 'a' dans le constructeur est inutile, ainsi que l'attribut monBallon, car tu peux utiliser directement Ballon.this
Exemple :
Autre remarque : dans prendre_donner, la méthode sleep est static, elle ne devrait pas être appelée avec le nom d'un objet mais directement avec le nom de la classe. De plus elle peut provoquer une InterruptedException qu'il faut gérer :
1) Tu déclares la classe Joueur en dehors de la classe Ballon (conseillé ici)
2) Tu crées tes joueurs en utilisant l'objet Ballon 'a' comme ceci :
Ballon.Joueur gauche = a.new Joueur(a,7,7,"zidane"); Ballon.Joueur droite = a.new Joueur(a,5,5,"ronaldo");
Remarque : dans ce cas, le paramètre 'a' dans le constructeur est inutile, ainsi que l'attribut monBallon, car tu peux utiliser directement Ballon.this
Exemple :
public void run() { while(true) Ballon.this.prendre_donner(this); }
Autre remarque : dans prendre_donner, la méthode sleep est static, elle ne devrait pas être appelée avec le nom d'un objet mais directement avec le nom de la classe. De plus elle peut provoquer une InterruptedException qu'il faut gérer :
try { Thread.sleep(j.periode*1000); } catch (InterruptedException e) { }La confiance n'exclut pas le contrôle