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 :

[Debutant]Problème d'initialisation Java


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut [Debutant]Problème d'initialisation Java
    Bonjour , je viens de commencer le java et je galère depuis 2h sur ce problème , tout d'abords mon code :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    /*Blabla 
    Blabla*/ 
    class TP43 { 
    final int N=15; 
     
    void principal() { 
     
    int[]Tab=new int[N]; 
    int nbElem; 
    int position; 
    int elemajout; 
     
    remplir(Tab,nbElem); 
     
    afficherTAB(Tab,nbElem); 
     
    while ( nbElem<N ) { 
     
    inserer(Tab,nbElem,position,elemajout); 
     
    }
     
    afficherTAB(Tab,nbElem);  
    }
     
    /*----------------------------------------------------------------------------------------*/   
     
     
    void remplir(int[]leTab,int nbElem) { 
     
    int i;
     
    nbElem=SimpleInput.getInt("Combien d'éléments nbElem voulez-vous ?"); 
     
    if( (nbElem<0)||(nbElem>N) ) 
    			{ System.out.println("Ce n'est pas possible , 0<nbElem<N"); } 
    		else { 
    				for(i=0;i<nbElem-1;i++) { 
    				leTab[i]=SimpleInput.getInt("Entrez un entier."); 
    				} 
    			} return;
    		}
     
     
    /*----------------------------------------------------------------------------------------*/  
     
     
    void inserer(int[]unTab,int nbElem,int position,int elemajout) { 
     
    int i; 
     
    position=SimpleInput.getInt("Position de l'éléments à ajouter ?"); 
     
    if( (position<0)||(position>=nbElem) ) 
    			{ System.out.println("Impossible 0<=position<nbElem"); } 
    		else { 
    				elemajout=SimpleInput.getInt("Element ( entier ) à ajouter ? : "); 
    				for(i=nbElem-1;i>position;i=i-1) { 
    				unTab[i+1]=unTab[i]; 
    				} 
    				unTab[position]=elemajout; 
    				nbElem=nbElem+1; 
    				} return;
    				}
     
     
    void afficherTAB(int[]duTab,int nbElem) { 
     
    int i; 
     
    System.out.println("Voici le contenu du Tableau");
     
    			for(i=0;i<nbElem-1;i++) { 
    			System.out.println(duTab[i]);
     
    } return; }
     
    }
    Et on m'indique comme erreur :

    Variable position , nbElem et elemajout "might not have been initialized".


    Une idée ?

    Merci d'avance je commence à déprimmer sévère

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    tu ne donnes aucune valeur à position avant son premier accès en lecture [qui est l'appel à inserer]...

    De plus, je ne comprends pas pourquoi tu déclares position dans principal...

    tu ne l'y utilise jamais, tu devrais plutôt le déclarer dans les fonctions où il est utilisé et l'utiliser comme une variable locale plutôt que globale...
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Merci j'ai initialisé mes variable à 0 ça marche.

    Pour position elle me sert dans la methode inserer.

    Bon par contre j'ai plein de problème avec ma méthode insérer , si par la même occasion vous une idée ...

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Citation Envoyé par Mopade
    Bon par contre j'ai plein de problème avec ma méthode insérer , si par la même occasion vous une idée ...
    Là, comme ça non, je te conseil plutôt d'aller regarder de ce côté : http://java.developpez.com/cours tu trouvera pleins de tutos pour t'aider, et http://java.developpez.com/faq où tu auras plein de réponse à des questions courantes.

    Ensuite, si tu as un problème précis (comme celui que tu avais annoncé plus haut), et que tu n'arrive pas le résoudre avec les tutos et les , tu pourras toujours poster sur le forum.

    Bonne Continuation sur Developpez.com

    [PS : pense au ]
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Alors pour mes problèmes précis , lorsque mon programme me demande un nombre d'éléments ( nbElem ) il m'en demande tjrs un de moins que prévu.

    Et ensuite quoi que je fasse dans la methode "position" il m'affiche l'erreur "0<=position<nbElem" .


  6. #6
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Citation Envoyé par Mopade
    Alors pour mes problèmes précis , lorsque mon programme me demande un nombre d'éléments ( nbElem ) il m'en demande tjrs un de moins que prévu.
    C'est ce que tu as demandé au programme de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(i=0;i<nbElem-1;i++)
    Exemple: tu demandes nbElem=4 éléments, il fera une boucle entre 0 inclus, et nbElem-1 soit 3 exclus. i prendra donc les valeurs 0, 1 et 2. Soit 3 éléments, un de moins...
    Donc vire le -1, ou met <=


    Citation Envoyé par Mopade
    Et ensuite quoi que je fasse dans la methode "position" il m'affiche l'erreur "0<=position<nbElem" .
    Vérifie ce qu'il y a dans "position" avant le test en mettant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("position= "+position);
    Ce n'est pas à nous de débugguer à ce niveau.... prend des bonnes habitudes dès le départ... trace ton code, regarde ce qu'il fait, n'ait pas peur de rajouter des System.ou.println (même si il faudra les effacer à la fin).
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Bon désolé de faire le lourd mais j'ai commencé Java y'a une semaine et j'ai ce truc à rendre pour demain et j'ai un cours suivi en classe qui me sert comme référence et je n'y arrive pas

    Je me confronte à un problème particulier , c'est bien l'initialisation de postion , nbElem etc ...

    Je les ai tous mit à 0 ,

    soit :

    int nbElem=0;

    Par exemple.


    Mais justement à la fin de mon programme j'ai une methode qui affiche le tableau , et elle affiche jusqu'à nbElem , et j'ai vérifié mon nbElem est à 0 donc ça n'affiche rien.

    Pourquoi ?


    Je fais un effort de compréhension depuis 4 heures aujourd'hui ( temps que j'ai passé sur mon programme ) et je commencé sérieusement à paniquer donc si vous pouvez me filer un coup de main j'en serai ravi

    Merci d'avance dans tous les cas

  8. #8
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    Citation Envoyé par Mopade
    Mais justement à la fin de mon programme j'ai une methode qui affiche le tableau , et elle affiche jusqu'à nbElem , et j'ai vérifié mon nbElem est à 0 donc ça n'affiche rien.
    Elle affiche et elle affiche pas??? C'est pas très clair tes explications...

    Enfin bon...

    Déjà, une chose... tu as des méthodes qui prennent un paramètre que tu redéfinis à l'intérieur de la méthode. Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void remplir(int[]leTab,int nbElem) { 
    ...
    nbElem=SimpleInput.getInt("Combien d'éléments nbElem voulez-vous ?");
    et aussi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void inserer(int[]unTab,int nbElem,int position,int elemajout) { 
    ...
    position=SimpleInput.getInt("Position de l'éléments à ajouter ?");
    Il n'y a aucun intérêt à passer une variable de classe en paramètre si c'est pour la redéfinir ensuite dans la méthode. M'est d'avis que ça fout le bordel pour le compilateur en prime... il se retrouve avec des variables de classe qui passent en paramètres et qui sont redéfinies dans la méthodes... ça, ça ne marche pas...

    Donc, soit tu passes nbElem et position dans les paramètres des méthodes (ce qui doit t'être demandé dans l'énoncé de l'exo non?), soit rien. A toi de les définir dans la méthode principal() avant l'appel des méthodes remplir() et insérer(). Ce qui semble logique, on demande le nombre d'éléments avant d'appeler la méthode qui entre les éléments...
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 8
    Par défaut
    Dans ce cas le problème vient tout simplement de mon nbElem ,
    Mais comment le faire connaitre aux autres méthodes alors ?

    Car je vois pas trop comment faire dans principal :S ,
    Et si je le fais dans le corp des méthodes ça ne marchera pas , enfin je pense.

  10. #10
    Expert confirmé

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 818
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 818
    Par défaut
    nbElem est déclaré en tant que variable de classe, position aussi. A partir de là, toutes les méthodes de la classe ont accès à ces variables.

    Il te suffit de faire tes SimpleInt.getInt(...) dans la méthode principale(), et de les enlever des deux autres méthodes.


    Si tu gardes tes méthodes telles que tu les as maintenant, le nbElem qui est à l'intérieur est une variable locale. Et même si elle s'appelle pareil que la variable de classe nbElem, ce n'est pas la même. Donc les modifications que tu fais à ta variable nbElem dans ta méthode, c'est-à-dire l'initialisation via SimpleInt.getInt(...), ne sont pas répercutées sur la variable nbElem de la classe, qui reste donc à 0.
    Si tu fais l'initialisation dans la méthode principale(), qui elle ne prend pas nbElem en paramètre, lorsque tu feras nbElem=..., tu modifieras la variable de classe. Et ça marchera beaucoup mieux.

    Ces notions de variables de classe/variables locale, c'est un concept qui peut paraitre abstrait, mais qu'il est nécessaire de comprendre pour éviter des erreurs. Si vraiment tu n'y arrives pas, quand tu écris tes méthodes, n'utilises pas pour les noms de tes paramètres le nom d'une variable qui existe déjà dans la classe.
    "Errare humanum est, sed perseverare diabolicum"

    Ma page sur DVP.com

Discussions similaires

  1. [debutant]problème connexion db access java
    Par megapacman dans le forum JDBC
    Réponses: 8
    Dernier message: 17/02/2009, 14h44
  2. [debutant][Applet] problèmes insertion applet java
    Par mlequim dans le forum Applets
    Réponses: 5
    Dernier message: 11/07/2005, 09h50
  3. [Debutant] Problème de sécurité dans un applet
    Par peaceinpal dans le forum Applets
    Réponses: 3
    Dernier message: 09/09/2004, 20h56
  4. [debutant]Problèmes
    Par BibiGmi dans le forum OpenGL
    Réponses: 2
    Dernier message: 05/03/2004, 14h00
  5. [Debutant] Problème du linker [Dev-c++4]
    Par Macdir dans le forum Dev-C++
    Réponses: 3
    Dernier message: 30/05/2003, 20h50

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