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 compilation: accès à une variable


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 26
    Points
    26
    Par défaut Problème compilation: accès à une variable
    Bonsoir tout le monde,
    j'ai un problème avec mon code qui compile pas: j'arrive pas à accéder à la variable solde: "solde cannot be resolved to a variable"

    Pourtant plus bas la variable solde n'est pas déclarée comme private, donc tout le package devrait y avoir accès (accès friendly) et même quand je crée une méthode accesseur dans la méthode calculerSolde() en faisant ça, ça ne passe pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public double getSolde()
    {
    return solde;
    }

    Voici le listing,Ps: il ne faut pas modifier le code source de la classe TestTirelire,
    Merci d'avance de votre aide et explications


    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    import java.util.Scanner;
     
    /*******************************************
     * Completez le programme a partir d'ici.
     *******************************************/
    class Tirelire
    {
    	private double montant;
     
    	//Methode getMontant qui retourne le montant dispo dans la tireLire
    	public double getMontant()
    	{
    		return montant;
    	}
     
    	//debut de la methode afficher : display montant
    	public void afficher()
    	{
    		if (montant<=0) 
    		{
    			System.out.println("Vous etes sans le sou.");
    			secouer();
    		}
    		else
    		{
    			System.out.println("Vous avez :"+montant+" euros dans votre tirelire.");
    		}
    	}
     
    	//methode secouer
     
    	public void secouer()
    	{
    		System.out.println("Bing bing \n");
    	}
     
    	public void remplir(double somme)
    	{
    		while (somme>0)
    		{
    			montant=montant+somme;
    		}
     
    	}
     
    	public void vider()
     
    	{
    		montant=0.0;
    	}
     
     
    	//debut methode puiser
    	public void puiser(double retrait)
    	{
    		while (retrait>0)
    		{
    			if (retrait>montant)
    			{
    				vider();
    			}
    		}
    	}  //fin methode puiser
     
     
    	public double calculerSolde(double budget)
     
    	{
     
     
     
    	if(budget>0)
    	{
     
    		solde=montant-budget;
    		return solde;
    	}
    	else
    	{
    		return montant;
    	}
     
     
     
     
    	}
     
     
    }
     
    /*******************************************
     * Ne rien modifier apres cette ligne.
     *******************************************/
    public class TestTirelire {
     
        public static void main(String[] args) {
            Tirelire piggy = new Tirelire();
     
            piggy.vider();
            piggy.secouer();
            piggy.afficher();
     
            piggy.puiser(20.0);
            piggy.secouer();
            piggy.afficher();
     
            piggy.remplir(550.0);
            piggy.secouer();
            piggy.afficher();
     
            piggy.puiser(10.0);
            piggy.puiser(5.0);
            piggy.afficher();
     
            System.out.println();
     
            // le budget de vos vacances de rêves.
            double budget;
            Scanner clavier = new Scanner(System.in);
     
            System.out.println("Donnez le budget de vos vacances : ");
            budget = clavier.nextDouble();
     
            // ce qui resterait dans la tirelire après les
            // vacances
            double solde = piggy.calculerSolde(budget);
     
            if (solde >= 0) {
                System.out.println("Vous etes assez riche pour partir en vacances !");
                System.out.print(" il vous restera " + solde + " euros");
                System.out.print(" a la rentree \n");
                piggy.puiser(budget);
            }
     
            else {
                System.out.print("Il vous manque " + (-solde) + " euros");
                System.out.print(" pour partir en vacances !\n");
            }
            clavier.close();
        }
    }

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le seul endroit où il y a une déclaration d'une variable solde, c'est dans la méthode main() de la classe Tirelire : sa portée est donc celle de la méthode main(). Il n'est même pas question de portée private ou "package", il s'agit d'une variable locale à une méthode.

    "Créer un accesseur dans une méthode" n'a strictement aucun sens : une méthode ne peut appartenir qu'a une classe, pas à une méthode (et un accesseur est une méthode).

    Pourquoi ne pas simplement écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public double calculerSolde(double budget) {
     
    	if(budget>0) {
     
    		return montant-budget;
     
    	}
    	else {
    		return montant;
    	}
    }
    Si tu veux utiliser une variable intermédiaire (aucune utilité dans ce cas, mais possible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public double calculerSolde(double budget) {
     
    	if(budget>0) {
     
                    double solde = montant-budget
    		return solde;
     
    	}
    	else {
    		return montant;
    	}
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    Merci pour votre retour explicite, donc dans le 2ème cas on est bien d'accord que la variable solde est totalement différente de la variable solde déclarée dans le méthode main?

    Sinon y'aurait t'il aucun moyen d'accèder à la variable locale solde se trouvant dans le main dans la classe Tirelire?

    Merci encore

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Une variable locale à une méthode ne peut être accèdée, par principe, que, après la déclaration de la variable :

    • Dans la méthode elle-même ;
    • Dans les classes anonymes créées dans la méthode, si elle est final ou effectively final.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2012
    Messages : 35
    Points : 26
    Points
    26
    Par défaut
    ça, c'est le sujet du prochain cour, merci encore de votre bienveillance Joel.
    Je marque résolu, bonne nuit et encore merci

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

Discussions similaires

  1. Problème d'accès à une variable partagée
    Par sebac dans le forum Général Java
    Réponses: 1
    Dernier message: 04/09/2009, 12h11
  2. Problème d'accés à une variable
    Par debo41 dans le forum Flex
    Réponses: 15
    Dernier message: 21/08/2008, 11h36
  3. [C#] Problème d'accès à une variable depuis une popup
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/01/2007, 15h30
  4. [POO] Problème d'accès à une variable privée
    Par Nadd dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2006, 21h43
  5. Problème d'accès à une variable
    Par khaled.mtibaa dans le forum Langage
    Réponses: 3
    Dernier message: 20/04/2006, 11h39

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