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 <identifier> expected / Creer un objet dans une classe


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut Problème <identifier> expected / Creer un objet dans une classe
    Bonjour,

    Je suis débutant en JAVA et j'ai un petit problème dans mon programme.
    Quand je souhaite séparer déclaration et définition lors de la création d'un objet (EX : Test mon_objet;mon_objet = new Test(); ) ca plante à la compi, alors que quand je fait les 2 d'un coup (Test mon_objet = new Test(); ) ca passe! En fait les 2 manières marchent dans ma fonction main, mais pas quand je créer un objet dans une classe. Pourquoi ?

    Merci d'avance

    P.S : Message d'erreur

    ./Jeu.java:4: <identifier> expected
    j1 = new Joueur();
    ^
    ./Jeu.java:4: cannot find symbol
    symbol : class j1
    location: class Jeu
    j1 = new Joueur();
    ^
    2 errors

  2. #2
    Membre actif Avatar de g0up1l
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 341
    Points : 294
    Points
    294
    Par défaut
    as-tu importé ta classe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    import tonPackage.taclasse ;
    Hope it helps !
    Nouveau ! Il y a une vie après le java, oxygénez-vous

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je dirais qu'il y a une erreur dans ton code... mais comme on ne le connais pas ca risque d'être dur de t'aider...

    a++

  4. #4
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    Salut,

    A tu defini plus haut le type de j1 si ce n'est pas le cas il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Joueur j1 = new Joueur();
    ++

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Citation Envoyé par guis14
    Salut,

    A tu defini plus haut le type de j1 si ce n'est pas le cas il faut faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Joueur j1 = new Joueur();
    ++
    En fait si je fais : Joueur j1 = new Joueur(); C OK !
    Mais, si je fais : Joueur j1; j1 = new Joueur(); Erreur ...

    Voici le codce :

    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
    public class Jeu
    {
        private Joueur j1;
        j1 = new Joueur();
     
        private int nb1,nbfinal=(int)(Math.random()*10);
     
        public boolean tour()
        {
    	nb1=j1.deviner();
    	if (nb1==nbfinal)
    	    {
    		return true;
    	    }
    	else 
    	    return false;
        }
    }
    Ca ca bug à la compil!

    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
    public class Jeu
    {
        private Joueur j1 = new Joueur();
     
        private int nb1,nbfinal=(int)(Math.random()*10);
     
        public boolean tour()
        {
    	nb1=j1.deviner();
    	if (nb1==nbfinal)
    	    {
    		return true;
    	    }
    	else 
    	    return false;
        }
    }
    Ca ca marche à la compil et et à l'exe

    Pour le package, j'ai rien mentionné donc j'utilise celui par defaut , et mes fichiers bytecode sont dans le repertoire courant, doncpas de problème je pense. Le programme marche si je sépare pas déclaration et définition

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    C'est normal que le compilateur te sorte une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Jeu
    {
        private Joueur j1;
        j1 = new Joueur();
    Tu ne peux pas avoir une instruction directement dans une classe.
    Tu peux seulement avoir :
    • Une déclaration d'attribut (éventuellement avec une initialisation).
    • Une déclaration de méthode ou de constructeur.
    • Une déclaration de classe interne
    • Un bloc de code static ou d'instance



    Donc dans ton cas, doit tu utilises une initialisation en ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        private Joueur j1 = new Joueur();
    Soit tu déplaces l'initialisation dans le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        private Joueur j1;
     
        public Jeu() {
        	j1 = new Joueur();
        }

    Soit tu utilises un bloc d'instance (mais je ne vois pas vraiment l'utilité dans ton cas) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        private Joueur j1;
     
        {
        	j1 = new Joueur();
        }

    Pour rappel les blocs d'instances sont exécuté juste avant le constructeur de la classe...


    a++

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 333
    Points : 295
    Points
    295
    Par défaut
    tu n as pas le droit d initialiser ton attribut autre part que dans une méthode un constructeur ou sur lui même ...

    en gros le mieux c'est de rajouter un constructeur à ta classe

    soit

    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
    public class Jeu
    {
        private Joueur j1;
    private int nb1,nbfinal=(int)(Math.random()*10);
     
      public Jeu()
        { 
        j1 = new Joueur();
        }
     
        public boolean tour()
        {
    	nb1=j1.deviner();
    	if (nb1==nbfinal)
    	    {
    		return true;
    	    }
    	else 
    	    return false;
        }
    }


    AAAAAAAAAAAAhhhhhhhhhhhhh on m'a pris de vitesse

  8. #8
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    257
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 257
    Points : 308
    Points
    308
    Par défaut
    C'est normal tu ne peux pas initialiser ton attribut ailleur que dans une methode.

    Il faut que tu mette

    Dans une méthode.

    ++

    On m'a pris deux fois de vitesse .... MDR...

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 39
    Points : 26
    Points
    26
    Par défaut
    Merci les gars pour votre rapidité et votre efficacité!!!
    J'ai bien compris le problème. De toute façon la suite de l'exercice est de créer un constructeur justement ! Mais, je voulais savoir pourquoi je ne pouvais pas utiliser cette manière pour creer mon objet . Je suis moins bête que tout à l'heure
    + et merci encore

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

Discussions similaires

  1. Creer des objets dans une JSP.
    Par cotede2 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 26/03/2012, 17h52
  2. list d'objet dans une classe
    Par wadcyr8_197 dans le forum C++
    Réponses: 10
    Dernier message: 04/07/2007, 15h34
  3. Réponses: 1
    Dernier message: 17/04/2007, 22h07
  4. [FLASH MX] Créer un objet dans une boucle
    Par alexfrere dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 30/04/2006, 01h35
  5. [POO] import d'objet dans une classe
    Par wdionysos dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2006, 21h05

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