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

C# Discussion :

Impossible d'utiliser une variable créée dans une méthode "public static void"


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut Impossible d'utiliser une variable créée dans une méthode "public static void"
    Madame, Monsieur,

    Je suis un débutant en programmation donc soyez compréhensif


    Je suis entrain de créer un programme de jeu de carte en mode console.

    Par contre, je n'arrive pas à utiliser une variable d'une méthode "public static void" dans ma méthode Main :

    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
    namespace projBataille
    {
     
     
    class Program
    	{				
     
    		public static void TypeCartes(string val1, string val2, string val3, string val4)
     
    		{
    			val1 = "trèfle";
    			val2 = "pique";
    			val3 = "coeur";
    			val4 = "carreau";
    		}
     
     
    		public static void Main(string[] args)
    		{
     
    			string[] Cartes = new string[16];
     
    			int i = 0;
     
                                while (i<=1)
    				{
     
    					Cartes[i] = "As de" + TypeCartes(val1);
    					i++;
    				}
    			   Console.ReadLine();							
     
    		}
    	}
    }
    En vous remerciant d'avance, meilleures salutations.

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour ,

    Tout premier conseil , pense a la balise [CODE] pour avoir les colorations syntaxique de ton code .
    Ici tu ne peux pas utiliser ta méthode pour remplir ton tableau , puisque ta méthode est Void justement , c'est a dire qu'elle ne renvoie rien .
    Or tu veux avoir comme résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cartes[i] = "As de" + TypeCartes(val1);    // => "As de " + "trèfle"
    Pour cela TypeCartes() doit retourner un string . Rendu la , tu vas te confronter à un nouveau problème , celui du nombre d'arguments dans ta fonction.
    Je te laisse y parvenir.
    throw new NoSignatureException();

  3. #3
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par ludovic.vetter Voir le message
    Par contre, je n'arrive pas à utiliser une variable d'une méthode "public static void" dans ma méthode Main :
    Il y a un problème de portée ici. La "portée" d'une variable définit jusqu’où il est possible de l’utiliser.. Ce n'est peut-être pas très claire, je te propose donc ce lien.

    Pour résumer, si tu déclares une variable dans un bloc d'instructions (ton "public static void" le cas échéant), seul le corps de l'instruction pourra en bénéficier. Dans les faits, la variable sera crée à l'entrée dans le bloc et détruite en sortie. Tu ne pourras donc pas l'utiliser en dehors du bloc. A moins, comme le propose WaterTwelve21, de faire un retour sur ta méthode.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    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
     
    namespace projBataille
    {
     
     
     
    	class Program
    	{				
     
    		public static string TypeCartes(string val1 = "trèfle")
     
    		{
    			return val1;
     
    		}
     
     
    		public static void Main(string[] args)
    		{
     
    		string[] Cartes = new string[16];
     
    		int i = 0;						
     
    		while (i<=1)
    			{
     
    				Cartes[i] = "As de" + TypeCartes(val1);
    				i++;
    			}
     
     
     
    			Console.ReadLine();
     
     
    		}
    	}
    }
    J'ai modifié pour la carte "tréfle", par contre je ne peux toujours pas l'utiliser...

    Merci d'éclairer ma lanterne.

  5. #5
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Tu as visiblement quelques difficultés avec les notions de porté des variables , fait attention le paramètre "val1" de ta fonction n'est pas le même que celle ci possède en argument .
    A l'intérieur de celle ci , tu pourrais très bien appeler ta variable "trucmuche". Donc ton main , la variable val1 n'existe pas et tu doit surement avoir un message d'erreur qui te l'annonce.

    Je t'invite a revoir quelques tutoriels sur les fonctionnements des méthodes ou alors viens sur le chat si tu le peux , je me ferai un plaisir de t'expliquer quelques bases

    Attention a la portée
    throw new NoSignatureException();

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Je crois que je commence à comprendre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Cartes[i] = "As de " + TypeCartes();
    et cela fonctionne

    Maintenant pour retourner plusieurs valeurs, je vais voir, je vous redis.

    Merci pour votre aide en tout cas

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Voilà, par contre j'ai fait une autre technique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public static class TypeCarte
    	{
    		public const string Type1 = "trèfle";
    		public const string Type2 = "pique";
    		public const string Type3 = "carreau";
    		public const string Type4 = "coeur";
    	}
    puis j'ai appelé mes constantes dans ma méthode Main...

    Par contre maintenant, je souhaiterai faire de même pour les valeurs (As, 2, 3, etc.).

    Vu que j'en ai beaucoup, y a-t'il une autre méthode pour faire cela ?

    Merci d'avance.

  8. #8
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    As tu vu les enums ? As tu vu la programmation orienté objet ? .

    Je pense qu'avec deux énumérations, l'une pour la couleur , l'autre pour la valeur, des solutions s'ouvrent à toi ( il y a bien d'autres solutions) .

    exemple d'énumération:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public  enum Couleur
        {
            trefle,
            pique,
            coeur,
            carreau
        }
    throw new NoSignatureException();

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Oui les enums je les ai vu, par contre pour l'instant je me cantonne à la console...

    Cela marche, par contre je souhaiterai que quand j'appelle mon public enum dans le Main, le premier critère qui correspond au critère numéro 1 s'affiche (car je souhaiterai incrémenter l'enum de 1 à chaque boucle while).

    Est-ce possible ? (et est-ce clair comme explication ?)

    Merci beaucoup pour votre aide précieuse

  10. #10
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Oui c'est plutôt clair
    Pas besoin d'incrémenter l'énum , tu peux parcourir les valeurs de celle ci directement avec un foreach.

    Ps: rejoint moi au chat , parce que parti ainsi ...
    throw new NoSignatureException();

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Comptable en formation en informatique
    Inscrit en
    Août 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Comptable en formation en informatique

    Informations forums :
    Inscription : Août 2015
    Messages : 21
    Points : 9
    Points
    9
    Par défaut
    Je ne peux pas malheureusement maintenant, mais avec plaisir une prochaine fois

    Pour info j'ai pu faire un foreach, et cela fonctionne.

    Merci beaucoup pour l'aide de tout le monde et à bientôt.

Discussions similaires

  1. Ecrasement d'une variable créée dans une interface graphique
    Par Adjen dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 06/11/2014, 12h40
  2. Afficher une variable créée dans une JSP
    Par dams78 dans le forum Struts 2
    Réponses: 4
    Dernier message: 12/06/2012, 15h13
  3. Réponses: 5
    Dernier message: 18/10/2011, 00h06
  4. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

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