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 de variables peut être pas intialisées


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Par défaut Problème de variables peut être pas intialisées
    Bonjour ou re,

    encore un soucis avec le désormais célèbre prog de banque.

    Eclipse me dit que "la variable locale mt n'est peut être pas initialisée" au niveau du ** mais pas dans le reste alors que mt est utilisé plusieurs fois.

    Même soucis du même genre (La variable locale un_compte n'a peut-être pas été initialisée) ou il y a les ****.

    Je capte pas pkoi il me prend "un_compte" en variable.

    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
     
    public void VirerDecompAcomp()
    	{
    		int indice, dimension, rep, comptadebit;
    		boolean trouve;
    		Compte un_compte;
     
    		double mt;
     
    		dimension = tbanque.size();
    		indice=0;
    		trouve=false;
    		String valeur;
     
     
    		Utilitaire.ecrire("Affichage des comptes");
    		afficher_comptes();
    		Utilitaire.ecrire("Entrez le numéro de compte à débiter");
    		rep=Utilitaire.lireEntier();		
     
    		while ((indice<dimension) && (trouve == false))
    		{
    			un_compte= (Compte) tbanque.get(indice);
    			if (un_compte.n_compte==rep)
    			{
    				trouve=true;
    				Utilitaire.ecrire(" Entrez le montant du virement ");
    				valeur=Utilitaire.lireChaine();
    				mt = Double.parseDouble(valeur);
    				un_compte.retrait(mt);
    			}
    			indice=indice+1;
    		}
    		if (trouve==false)
    		{
    			Utilitaire.ecrireLigne(" Compte à débiter inconnu ");
    		}
    		else
    		{
    			Utilitaire.ecrire("Affichage des comptes");
    			afficher_comptes();
    			Utilitaire.ecrire("Entrez le numéro de compte à créditer");
    			rep=Utilitaire.lireEntier();		
     
    			while ((indice<dimension) && (trouve == false))
    			{
    				un_compte= (Compte) tbanque.get(indice);
    				if (un_compte.n_compte==rep)
    				{
    					trouve=true;
    					un_compte.depot(mt);**
     
    				}
    				indice=indice+1;
    			}
    			if (trouve==false)
    			{
    				Utilitaire.ecrireLigne(" Compte à créditer inconnu, , compte débité : recrédité ");
    				****un_compte.depot(mt);**
    			}
    			else
    			{
    				Utilitaire.ecrireLigne(" Virement effectué ");
    			}
    		}
    	}
    Voici le début de la classe "Compte" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Compte {
    	public int n_compte;
    	private Client tTitulaire;
    	private double solde;
     
    	Compte()
    	{
    		n_compte=0;
    		tTitulaire=new Client();
    		solde = 0.0;
    	}
    Merci encore pour toute votre aide.

    A+

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    C'est normal, mt est initialisé dans une condition, donc rien ne dit qu'il sera initialisé au moment ou tu vas l'employer, il faut donc l'initialiser à une valeur par défaut, 0.0 par exemple

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Par initialisation il est question d'instanciation.
    Lorsque tu déclare tes variables, tu ne les instancie pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Compte un_compte;
    double mt;
    Il te faut les initialiser (notamment le Compte ou tu risque une NullPointerException).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Compte un_compte = new Compte();
    double mt = 0.0;
    [edit]grilled[/edit]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    Facile, ta variable mt a été déclarée comme ça : double mt; donc elle est pas initialisée.
    Ensuite, tu fais mt = Double.parseDouble(valeur); mais cette instruction est incluse dans un if ! Si jamais tu ne passes pas dans le if car la condition pour y rentrer n'est pas satisfaite, alors ta variable mt ne sera jamais initialisée... capitch ?

    Une solution est de déclarer ta variable en faisant double mt = 0.0 ;.
    Une autre est de mettre un bloc else à ton if et de donner une valeur à mt dedans.

    ++

    EDIT : grilled aussi

  5. #5
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Par défaut
    lol là j'ai été bien nul, j'avais pas fais gaffe que je l'avais déclaré mais pas initialisé.

    dsl

    merci d'avoir relevé ma grosse erreur.

    par contre j'ai toujours le problème à ce niveau là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Utilitaire.ecrireLigne(" Compte à créditer inconnu, , compte débité : recrédité ");
    un_compte.depot(mt);
    merci d'avance

  6. #6
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    Quelle erreur ?

  7. #7
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 42
    Par défaut
    excusez moi j'ai voulu aller vite, il y avait la prof d'éco qui approchait lol.

    HS : l'éco c nul ... vive le dev

    En fait l'erreur qu'eclipse me donne, c'est :

    "La variable locale un_compte n'a peut-être pas été initialisée"

    Alors que "n_compte" n'est pas une variable et que je m'en suis servi exactement comme d'habitude.

    Merci encore

  8. #8
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut
    remplaces

    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Compte un_compte = null;

  9. #9
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    meme cause, meme resultat :
    un_compte est une instance qui a juste été déclarée, et elle est settée seulement dans des boucles while() => il se peut que cette variable ne soit jamais affectée.

    Par défaut tu peux écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Compte un_compte = null;

  10. #10
    Membre expérimenté Avatar de xv-mnt
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2005
    Messages : 142
    Par défaut
    thibaut trop rapide !!

  11. #11
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Tu peux nous montrer ta méthode "depot" de la classe compte ?

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

Discussions similaires

  1. Eliminer 'La variable n'est peut-être pas initialisée'
    Par GoustiFruit dans le forum Débuter
    Réponses: 11
    Dernier message: 28/06/2012, 14h50
  2. Réponses: 20
    Dernier message: 02/02/2008, 22h14
  3. Problème réactivation Vista peut-être insoluble?
    Par ombre6 dans le forum Windows Vista
    Réponses: 7
    Dernier message: 28/08/2007, 23h17
  4. problème d'apostrophe peut-être
    Par ballantine's dans le forum Langage
    Réponses: 4
    Dernier message: 05/07/2007, 15h07
  5. Réponses: 3
    Dernier message: 15/06/2006, 16h43

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