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

BadSnip 2 Messages postés samedi 20 septembre 2008Date d'inscription 20 septembre 2008 Dernière intervention - 20 sept. 2008 à 13:01 - Dernière réponse : aminescm 7 Messages postés mercredi 19 octobre 2011Date d'inscription 9 mai 2012 Dernière intervention
- 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 

6 réponses

Répondre au sujet
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 sept. 2008 à 13:59
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de nhervagault
BadSnip 2 Messages postés samedi 20 septembre 2008Date d'inscription 20 septembre 2008 Dernière intervention - 20 sept. 2008 à 14:49
0
Utile
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
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 20 sept. 2008 à 18:27
0
Utile
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
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 20 sept. 2008 à 21:08
0
Utile
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
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 23 sept. 2008 à 08:11
0
Utile
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
aminescm 7 Messages postés mercredi 19 octobre 2011Date d'inscription 9 mai 2012 Dernière intervention - 3 mars 2012 à 06:34
0
Utile
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.