Home > Blockchain >  Saving data from a switch used as a menu in C#?
Saving data from a switch used as a menu in C#?

Time:02-11

Im trying to make a bank program that is going to have the swich as a menu that i can call the diffrent cases from. But the problem is that i don't know how i can call one of the cases in the switch, and then let the user enter data that will be saved the variable.

The thing is if i let the user put like 100 into his account, the balance says it still is 0. It's problary because i've set the balance (saldo) to zero and when the menu loops it gets that value? But i dont know how to do since i have to give the saldo a value to start with.

Here is my code:

namespace Bank
{
class Konto
{
    static void Main(string[] args)
    {
        Console.WriteLine("Välkommen till Andreas bank!");
        bool avsluta = true;

        while (avsluta)
        { 
            Console.WriteLine("Ange det alternativ för vad du vill göra: ");
            Console.WriteLine("[I]nsättning");
            Console.WriteLine("[U]ttag");
            Console.WriteLine("[S]aldo");
            Console.WriteLine("[R]äntebetalning");
            Console.WriteLine("[A]vsluta");

            
            char menuAlternativ = Convert.ToChar(Console.ReadLine());
            Console.WriteLine(GetMenu(menuAlternativ));

            Console.ReadLine();
        }
    }



    static string GetMenu(char menu)
    {

        string menuChoice;
        double insättning;
        double saldo = 0;
        double uttag;
       

        switch (menu)
        {
            case 'I':
                Console.WriteLine("Ange hur mycket du vill sätta in: ");
                insättning = Convert.ToInt32(Console.ReadLine());
                saldo = insättning   saldo;
                menuChoice = "Du har satt in "   insättning   " Kronor.";
                break;
            case 'U':
                Console.WriteLine("Ange hur mycket du vill ta ut: ");
                uttag = Convert.ToInt32(Console.ReadLine());
                menuChoice = "Du har tagit ut "   uttag   " Kronor.";
                break;
            case 'S':
                menuChoice = "Ditt saldo är: "   saldo   " Kronor.";
                break;

            case 'R':
                double Summa = 0, ränta, sparandeÅr, totaltSparande;
                Console.Write("Skriv in ditt årliga sparande: ");
                totaltSparande = Convert.ToDouble(Console.ReadLine());
                Console.Write("Ange räntan per år: ");
                ränta = Convert.ToDouble(Console.ReadLine()) / 100;
                Console.Write("Ange antal år du vill spara: ");
                sparandeÅr = Convert.ToDouble(Console.ReadLine());

                //Om antal år är mindre än antal år användaren vill spara, öka med 1 år tills användarens antal år är nådd.
                for (int år = 1; år < sparandeÅr   1; år  )
                {
                    Summa = totaltSparande * Math.Pow((1   ränta / sparandeÅr), (sparandeÅr * år));
                    Console.Write("Ditt totala sparande för år {0} "   " är: {1:F0}. \n", år, Summa);
                }
                menuChoice = "Så här kommer din ränta att se ut.";
                break;

            case 'A':
                menuChoice = "Du har valt att avsluta programmet.";
                break;
            default:
                menuChoice = "Invalid menu character";
                break;

        }

        return menuChoice;
    }
    
    
}
}

CodePudding user response:

I have placed saldo above class definition. This will make it global which means it can be access from anywhere in the program. You placed saldo inside GetMenu() which was private for the method setting it to zero every time it was called.

Learn More


namespace Bank
{ 
    class Konto 
    { 
        double saldo = 0; //<--------Place saldo here (GLOBALLY!) to persist value between method calls.
        
        static void Main(string[] args) 
        { 
            Console.WriteLine("Välkommen till Andreas bank!"); 
            bool avsluta = true;

            while (avsluta)
            { 
                Console.WriteLine("Ange det alternativ för vad du vill göra: ");
                Console.WriteLine("[I]nsättning");
                Console.WriteLine("[U]ttag");
                Console.WriteLine("[S]aldo");
                Console.WriteLine("[R]äntebetalning");
                Console.WriteLine("[A]vsluta");

                char menuAlternativ = Convert.ToChar(Console.ReadLine());
                Console.WriteLine(GetMenu(menuAlternativ));

                Console.ReadLine();
            }
        }

        static string GetMenu(char menu)
        {
            string menuChoice;
            double insättning;
            double uttag;
       

            switch (menu)
            {
                case 'I':
                    Console.WriteLine("Ange hur mycket du vill sätta in: ");
                    insättning = Convert.ToInt32(Console.ReadLine());
                    saldo = insättning   saldo;
                    menuChoice = "Du har satt in "   insättning   " Kronor.";
                break;
                case 'U':
                    Console.WriteLine("Ange hur mycket du vill ta ut: ");
                    uttag = Convert.ToInt32(Console.ReadLine());
                    menuChoice = "Du har tagit ut "   uttag   " Kronor.";
                break;
                case 'S':
                    menuChoice = "Ditt saldo är: "   saldo   " Kronor.";
                break;
                case 'R':
                    double Summa = 0, ränta, sparandeÅr, totaltSparande;
                    Console.Write("Skriv in ditt årliga sparande: ");
                    totaltSparande = Convert.ToDouble(Console.ReadLine());
                    Console.Write("Ange räntan per år: ");
                    ränta = Convert.ToDouble(Console.ReadLine()) / 100;
                    Console.Write("Ange antal år du vill spara: ");
                    sparandeÅr = Convert.ToDouble(Console.ReadLine());

                    //Om antal år är mindre än antal år användaren vill spara, öka med 1 år tills användarens antal år är nådd.
                    for (int år = 1; år < sparandeÅr   1; år  )
                    {
                        Summa = totaltSparande * Math.Pow((1   ränta / sparandeÅr), (sparandeÅr * år));
                        Console.Write("Ditt totala sparande för år {0} "   " är: {1:F0}. \n", år, Summa);
                    }
                    menuChoice = "Så här kommer din ränta att se ut.";
                break;
                case 'A':
                    menuChoice = "Du har valt att avsluta programmet.";
                break;
                default:
                    menuChoice = "Invalid menu character";
                break;
            }
            return menuChoice;
        }
    }
}

CodePudding user response:

You must add a global variable double saldo=0, in main class .

try this

 class Program
    {  
        static double saldo = 0;
        static void Main(string[] args)
        {       
           
           string sentence = "This is a goodday";        
           string word = "goods";  
          // Console.WriteLine(checkString(sentence,word).ToString());

        Console.WriteLine("Välkommen till Andreas bank!");
        bool avsluta = true;

        while (avsluta)
        { 
            Console.WriteLine("Imposta l'opzione per ciò che vuoi fare: ");
            Console.WriteLine("[I]Depositare");
            Console.WriteLine("[U]presa");
            Console.WriteLine("[S]aldo");
            Console.WriteLine("[R]pagamento di interessi");
            Console.WriteLine("[A]fine");

           
            char menuAlternativ = Convert.ToChar(Console.ReadLine());
            Console.WriteLine(GetMenu(menuAlternativ));

            Console.ReadLine();
        }

        }
    static string GetMenu(char menu)
    {

        string menuChoice;
        double insättning;
        
        double uttag;
       

        switch (menu)
        {
            case 'I':
                Console.WriteLine("Inserisci quanto vuoi depositare: ");
                insättning = Convert.ToInt32(Console.ReadLine());
                saldo = insättning   saldo;
                menuChoice = "Hai depositato "   insättning   " Corona.";
                break;
            case 'U':
                Console.WriteLine("Inserisci quanto vuoi prelevare: ");
                uttag = Convert.ToInt32(Console.ReadLine());
                menuChoice = "Hai tirato fuori"   uttag   " Corona.";
                break;
            case 'S':
                menuChoice = "Il tuo saldo è: "   saldo   " Corona.";
                break;

            case 'R':
                double Summa = 0, ränta, sparandeÅr, totaltSparande;
                Console.Write("Inserisci i tuoi risparmi annuali: ");
                totaltSparande = Convert.ToDouble(Console.ReadLine());
                Console.Write("Inserisci il tasso di interesse per anno: ");
                ränta = Convert.ToDouble(Console.ReadLine()) / 100;
                Console.Write("Inserisci il numero di anni che vuoi salvare: ");
                sparandeÅr = Convert.ToDouble(Console.ReadLine());

                //Om antal år är mindre än antal år användaren vill spara, öka med 1 år tills användarens antal år är nådd.
                for (int år = 1; år < sparandeÅr   1; år  )
                {
                    Summa = totaltSparande * Math.Pow((1   ränta / sparandeÅr), (sparandeÅr * år));
                    Console.Write("Il tuo risparmio totale per anni {0} "   " är: {1:F0}. \n", år, Summa);
                }
                menuChoice = "Ecco come apparirà il tuo tasso di interesse.";
                break;

            case 'A':
                menuChoice = "Hai scelto di terminare il programma.";
                break;
            default:
                menuChoice = "Invalid menu character";
                break;

        }

        return menuChoice;
    }```

Alex
  • Related