Utilisation d'une variable locale non assignée 'TVA' [Résolu]

Messages postés
2
Date d'inscription
samedi 20 septembre 2008
Dernière intervention
20 septembre 2008
- - Dernière réponse : aminescm
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Dernière intervention
9 mai 2012
- 3 mars 2012 à 06:34
Bonjour,

Je suis étudiant en BTS de 1ere année et je commence simplement a apprendre le C#.
J'ai recherché sur ce site et bien d'autre si quelqu'un avais la même erreur que moi mais je n'ai rien trouver (pas doué peut être?)

Comme dit dans le titre, je n'arrive pas a résoudre cette erreur. D'ailleurs je ne comprend pas non plus pourquoi il me l'affiche.

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Prix_à_payer_selon_code_article
{
    class Program
    {
        static void Main(string[] args)
        {
            //Variables

            int QTE;
            float PHT,PaP,TVA;
            string texte,CODE,prem_carac_CODE;

            //Saisies

            Console.WriteLine("Quelle est la quantité du produit souhaité?");
            texte = Console.ReadLine();
            QTE = int.Parse(texte);
            Console.WriteLine("Quel est le prix hors taxe de l'article souhaité?");
            texte = Console.ReadLine();
            PHT = float.Parse(texte);
            Console.WriteLine("Quel est le code de l'article?");
            CODE = Console.ReadLine();

            //Calculs

            prem_carac_CODE = CODE.Substring(0, 1);
            switch (prem_carac_CODE)
            {
                case "A": TVA = 5.25F;
                    break;
                case "B": TVA = 19.6F;
                    break;
                case "C": TVA = 33.0F;
                    break;
                default: Console.WriteLine("Erreur dans la saisie du code");
                    break;
            }
            Console.WriteLine(TVA);
            PaP = QTE * PHT * (TVA / 100 + 1);

            //Affichage

            Console.WriteLine("Le prix à payer est de" + PaP);
            texte = Console.ReadLine();

Voila je ne comprend pas cette erreur "Utilisation d'une variable locale non assignée 'TVA'" a l'endroit écrit en rouge.
Je viens de lui assigné des valeurs dans le Switch mais rien a faire.
Pourtant quand je déplace mon "Console.WriteLine(TVA);" a l'intérieur du Switch et que j'execute, il m'affiche bien la valeur demandé et l'erreur reste la même mais sur le TVA en Vert.

Si quelqu'un peut m'aider. Merci
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
3
Merci
Salut,

Je pense que le problème vient qu'il te manque un chemin qui n'assigne pas ta valeur
Le chemin default de ton switch n'assigne pas

si tu fais
  default: TVA = 0.0F; Console.WriteLine("Erreur dans la saisie du code");
                    break;
ca devrait fonctionner

En général, il est conseiller d'assigner à la déclaration.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 105 internautes nous ont dit merci ce mois-ci

Commenter la réponse de nhervagault
Messages postés
2
Date d'inscription
samedi 20 septembre 2008
Dernière intervention
20 septembre 2008
0
Merci
Effectivement l'erreur ne s'affiche plus. J'ai tester avec une autre valeur que "A","B" ou "C" (ex : "D")
et il m'affiche uniquement mon message "Erreur dans la saisie du code".
Mon code finalisé et réussi grâce a toi est :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Prix_à_payer_selon_code_article
{
    class Program
    {
        static void Main(string[] args)
        {
            //Variables

            int QTE;
            float PHT,PaP,TVA;
            string texte,CODE,prem_carac_CODE;

            //Saisies

            Console.WriteLine("Quelle est la quantité du produit souhaité?");
            texte = Console.ReadLine();
            QTE = int.Parse(texte);
            Console.WriteLine("Quel est le prix hors taxe de l'article souhaité?");
            texte = Console.ReadLine();
            PHT = float.Parse(texte);
            Console.WriteLine("Quel est le code de l'article?");
            CODE = Console.ReadLine();

            //Calculs

            prem_carac_CODE = CODE.Substring(0, 1);
            switch (prem_carac_CODE)
            {
                case "A": TVA = 5.25F;
                    break;
                case "B": TVA = 19.6F;
                    break;
                case "C": TVA = 33.0F;
                    break;
                default: TVA = 00.0F;
                    break;
            }

            //Affichage
           
            if (TVA == 00.0F)
            {
                PaP = 0;
                Console.WriteLine("Erreur dans la saisie du code.");
            }
            else
            {
                PaP = QTE * PHT * (TVA / 100 + 1);
                Console.WriteLine("La TVA est de :" +TVA+ "%.");
                Console.WriteLine("Le prix à payer est donc de " + PaP.ToString("##0.00") + " euros.");
            };
            texte = Console.ReadLine();

Voilou merci de ton aide :)
Commenter la réponse de BadSnip
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
0
Merci
Pour ton info quelques petits conseils
1 --> Tu peux faire ton switch sur les caractères
par exemple

            switch (CODE[0])
            {
                case 'A': TVA

2 --> Console.WriteLine("La TVA est de :" +TVA+ "%.");
Aurait pu être écrit de la forme suivante

Console.WriteLine(String.Format("La TVA est de : {0}%.",TVA));
Plus performant (évites la contenation de chaine (car la chaine est recopie a chaque "+" string est immuable cherche sur internet et du comprendra)
et plus propre (exemple pour l'internationalisation, ....)

3 --> Tu peux même enlever les namespace inutile
using System.Collections.Generic;
using System.Linq;
using System.Text;
Commenter la réponse de nhervagault
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
Salut,

Petite remarque au passage : on a tendance à oublier que la méthode WriteLine supporte déjà de base le fonctionnement pour lequel nhervagault a utilisé String.Format au travers de différentes surcharges :
De 1 à 4 valeurs : WriteLine(String, Object) / WriteLine(String, Object, Object) / WriteLine(String, Object, Object, Object) / WriteLine(String, Object, Object, Object, Object)
5 valeurs et plus : [http://msdn.microsoft.com/en-us/library/828t9b9h.aspx WriteLine(String, Object[])]

Donc
Console.WriteLine(String.Format("La TVA est de : {0}%.",TVA));
devient
Console.WriteLine("La TVA est de : {0}%.", TVA);

/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Dernière intervention
20 juin 2013
0
Merci
Et puis que la TVA est exprimée en pourcent, je propose le code suivant:
Console.WriteLine("La TVA est de : {0:P}.", TVA);

<hr />
-My Blog-
Commenter la réponse de cs_Bidou
Messages postés
7
Date d'inscription
mercredi 19 octobre 2011
Dernière intervention
9 mai 2012
0
Merci
c'est pas normal , j'ai le meme probléme :

voila mon code , juste j'ai crée une méthode dans une classe pour connaitre si la personne et un stagiaire ou condidat etc , et j'ai vraiment besoin de récupérer le champ (TAB)
merci pour votre aide .




public string recherches(string champ ,string val)
{


string TAB ;
SqlConnection Connecter = new SqlConnection();
Connecter.ConnectionString = ("data source= GLINFO-PC ; DATABASE=GRH2 ;Integrated Security=True;");


Connecter.Open();
SqlCommand Sql = new SqlCommand("select * from PERSONNE ", Connecter);
SqlDataReader dr;
dr = Sql.ExecuteReader();

while (dr.Read())
{

if
(dr[champ].ToString() == val) && (dr["TYPE_PERSONNE"].ToString() == "Condidat"))
{
TAB = "PERSONNE_CONDIDAT";

selectBD("PERSONNE_CONDIDAT");



}
}

return TAB;
///// l'erreur ici : Utilisation d'une variable locale non assignée 'TAB'
Commenter la réponse de aminescm

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.