如何在 C# 中的计算器中添加十个结果的更改历史记录?

How do I add a changing history of ten results in a calculator in C#?

我有一个简单的计算器,我想记录前十个结果。

我知道它是以一种奇怪的方式构建的,但我仍然是一个初学者所以不要期望太多。请告诉我该怎么做,并清楚地解释每件事的作用。我就是找不到解决办法。我正在学习数组和列表,但我不知道该怎么做。

class Program
{
    public static void Main(string[] args)
    {
        start:
            Console.WriteLine("this is a simple calculator. you will need to choose what kind of math problem you want and how many numbers you want");
            Console.WriteLine("1. division");
            Console.WriteLine("2. multiplication");
            Console.WriteLine("3. addition ");
            Console.WriteLine("4. subtraction");
            Console.WriteLine("5. exponent");

            int answermenu = int.Parse(Console.ReadLine());

            switch (answermenu)
            {
                case 1: goto divider;                   
                case 2: goto multiplier;
                case 3: goto addition;
                case 4: goto subtracter;
                case 5: goto exponent;
                default: 
                    Console.WriteLine("You didn't pick any of the options. Please pick a valid option when we get you back to the menu.");
                    Console.WriteLine("to continue press enter");
                    Console.ReadKey();
                    goto start;
        }

    divider:
        Console.WriteLine("welcome to the division problem");
        Console.WriteLine("how many numbers you want to include in your math problem?");
        Console.WriteLine("write the number you want and then press enter.");
        int HMNdivanswer = int.Parse(Console.ReadLine());

        switch (HMNdivanswer)
        {
            case 2: goto divider2nums;
            case 3: goto divider3nums;
            case 4: goto divider4nums;
            case 5: goto divider5nums;
            case 6: goto divider6nums;

            default:
                Console.WriteLine("you didn't provide a valid number. please write a valid number. the max number is 6 and the min number is 2.");
                goto divider;
        }

        divider2nums:
        Console.Write("please write num1: ");          
        double num1division2nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");          
        double num2division2nums = int.Parse(Console.ReadLine());
        double lastanswer = num1division2nums / num2division2nums;
        Console.WriteLine($"the answer is " + num1division2nums / num2division2nums);            
        Console.ReadKey();
        goto backtomenuanswerdivision;
    divider3nums:
        Console.Write("please write num1: ");         
        double num1division3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2division3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3division3nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1division3nums / num2division3nums / num3division3nums);
        goto backtomenuanswerdivision;
divider4nums:
        Console.Write("please write num1: ");
        double num1division4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2division4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3division4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4division4nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1division4nums / num2division4nums / num3division4nums / num4division4nums);
        goto backtomenuanswerdivision;
divider5nums:
        Console.Write("please write num1: ");
        double num1division5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2division5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3division5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4division5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5division5nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1division5nums / num2division5nums / num3division5nums / num4division5nums / num5division5nums);
        goto backtomenuanswerdivision;
divider6nums:
        Console.Write("please write num1: ");
        double num1division6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2division6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3division6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4division6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5division6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num6: ");
        double  num6division6nums = int.Parse(Console.ReadLine());

        Console.WriteLine($"the answer is " + num1division6nums / num2division6nums / num3division6nums / num4division6nums / num5division6nums / num6division6nums);
        goto backtomenuanswerdivision;

    backtomenuanswerdivision:
        Console.WriteLine("where do you want to go now?");
        Console.WriteLine("1. main menu");
        Console.WriteLine("2. division menu");
        Console.WriteLine("3. end program");
        int menutomenuanswerdivision = int.Parse(Console.ReadLine());
    switch (menutomenuanswerdivision)
    {
            case 1: goto start;
            case 2: goto divider;
            case 3: goto end_program;
            default:
                Console.WriteLine(" you didn't pick any of the options.please pick a valid option when we get you back to the menu.");
                Console.WriteLine("to continue press enter");
                Console.ReadKey();
                goto backtomenuanswerdivision;
        }

    multiplier:
        Console.WriteLine("welcome to the multiplying problem");
        Console.WriteLine("how many numbers you want to include in your math problem?");
        Console.WriteLine("write the number you want and then press enter.");
        int HMNmulanswer = int.Parse(Console.ReadLine());
        switch (HMNmulanswer)
        {
            case 2: goto multiplier2nums;
            case 3: goto multiplier3nums;
            case 4: goto multiplier4nums;
            case 5: goto multiplier5nums;
            case 6: goto multiplier6nums;
            default:
                Console.WriteLine("you didnt write a valid number. please write a valid number");
                goto multiplier;

        }
      multiplier2nums:  
        Console.Write("please write num1: ");
        double num1multiplier2nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2multiplier2nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1multiplier2nums * num2multiplier2nums);
        goto BackToMenuAnswerMultiplier;
        multiplier3nums:
        Console.Write("please write num1: ");
        double num1multiplier3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2multiplier3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3multiplier3nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1multiplier3nums * num2multiplier3nums * num3multiplier3nums);
        goto BackToMenuAnswerMultiplier;
    multiplier4nums:
        Console.Write("please write num1: ");
        double num1multiplier4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2multiplier4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3multiplier4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4multiplier4nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1multiplier4nums * num2multiplier4nums * num3multiplier4nums * num4multiplier4nums);
        goto BackToMenuAnswerMultiplier; 
multiplier5nums:
        Console.Write("please write num1: ");
        double num1multiplier5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2multiplier5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3multiplier5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4multiplier5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5multiplier5nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1multiplier5nums * num2multiplier5nums * num3multiplier5nums * num4multiplier5nums * num5multiplier5nums);
        goto BackToMenuAnswerMultiplier;
    multiplier6nums:
        Console.Write("please write num1: ");
        double num1multiplier6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2multiplier6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3multiplier6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4multiplier6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5multiplier6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num6: ");
        double num6multiplier6nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + num1multiplier6nums * num2multiplier6nums * num3multiplier6nums * num4multiplier6nums * num5multiplier6nums * num6multiplier6nums);
        goto BackToMenuAnswerMultiplier;

    BackToMenuAnswerMultiplier:
        Console.WriteLine("where do you want to go now?");
        Console.WriteLine("1. main menu");
        Console.WriteLine("2. multiplying menu");
        Console.WriteLine("3. end program");
        int menutomenuanswermultiplier = int.Parse(Console.ReadLine());
        switch (menutomenuanswermultiplier)
        {

            case 1: goto start;
            case 2: goto multiplier;
            case 3: goto end_program;
            default:
                Console.WriteLine(" you didn't pick any of the options. Please pick a valid option when we get you back to the menu.");
                Console.WriteLine("to continue press enter");
                Console.ReadKey();
                goto BackToMenuAnswerMultiplier;
        }

    addition:
        Console.WriteLine("welcome to the addition problem");
        Console.WriteLine("how many numbers you want to include in your math problem?");
        Console.WriteLine("write the number you want and then press enter.");
        int HMNaddanswer = int.Parse(Console.ReadLine());

        switch(HMNaddanswer)
        {
            case 2: goto addition2nums;
            case 3: goto addition3nums;
            case 4: goto addition4nums;
            case 5: goto addition5nums;
            case 6: goto addition6nums;
            default: Console.WriteLine("you didn't provide a valid number. please write a valid number");
                goto addition;
        }

        addition2nums:
        Console.Write("please write num1: ");
        double num1addition2nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2addition2nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1addition2nums + num2addition2nums));
        goto BackToMenuAnswerAddition;
    addition3nums:
        Console.Write("please write num1: ");
        double num1addition3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2addition3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3addition3nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1addition3nums + num2addition3nums + num3addition3nums));
        goto BackToMenuAnswerAddition;
addition4nums:
        Console.Write("please write num1: ");
        double num1addition4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2addition4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3addition4nums = int.Parse(Console.ReadLine());
        Console.WriteLine("please write num4: ");
        double num4addition4nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1addition4nums + num2addition4nums + num3addition4nums + num4addition4nums));
        goto BackToMenuAnswerAddition;
addition5nums:
        Console.Write("please write num1: ");
        double num1add5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2add5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3add5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4add5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5add5nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1add5nums + num2add5nums + num3add5nums + num4add5nums + num5add5nums));
        goto BackToMenuAnswerAddition;
    addition6nums:
        Console.Write("please write num1: ");
        double num1add6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2add6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3add6nums = int.Parse(Console.ReadLine());
        Console.WriteLine("please write num4: ");
        double num4add6nums = int.Parse(Console.ReadLine());
        Console.WriteLine("please write num5: ");
        double num5add6nums = int.Parse(Console.ReadLine());
        Console.WriteLine("please write num6: ");
        double num6add6nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1add6nums + num2add6nums + num3add6nums + num4add6nums + num5add6nums + num6add6nums));
        goto BackToMenuAnswerAddition;

    BackToMenuAnswerAddition:
        Console.WriteLine("where do you want to go now?");
        Console.WriteLine("1. main menu");
        Console.WriteLine("2. addition menu");
        Console.WriteLine("3. end program");
        int MenuToMenuAnswerAddition = int.Parse(Console.ReadLine());

        switch (MenuToMenuAnswerAddition)
        {
            case 1: goto start;
            case 2: goto addition;
            case 3: goto end_program;
            default:
                Console.WriteLine(" you didn't pick any of the options. Please  pick a valid option when we get you back to the menu.");
                Console.WriteLine("to continue press enter");
                Console.ReadKey();
                goto BackToMenuAnswerAddition;
        }

    subtracter:
        Console.WriteLine("welcome to the subtraction problem");
        Console.WriteLine("how many numbers you want to include in your math problem?");
        Console.WriteLine("write the number you want and then press enter.");
        int HMNsubanswer = int.Parse(Console.ReadLine());

        switch (HMNsubanswer)
        {
            case 2: goto subtracter2nums;
            case 3: goto subtracter3nums;
            case 4: goto subtracter4nums;
            case 5: goto subtracter5nums;
            case 6: goto subtracter6nums;
        }

subtracter2nums:
        Console.Write("please write num1: ");
        double num1subtraction2nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2subtraction2nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1subtraction2nums - num2subtraction2nums));
        goto BackToMenuAnswerSubstraction;
    subtracter3nums:
        Console.Write("please write num1: ");
        double num1subtraction3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2subtraction3nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3subtraction3nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1subtraction3nums - num2subtraction3nums - num3subtraction3nums));
        goto BackToMenuAnswerSubstraction;
    subtracter4nums:
        Console.Write("please write num1: ");
        double num1subtraction4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2subtraction4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3subtraction4nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4subtraction4nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1subtraction4nums - num2subtraction4nums - num3subtraction4nums - num4subtraction4nums));
        goto BackToMenuAnswerSubstraction;
    subtracter5nums:
        Console.Write("please write num1: ");
        double num1subtraction5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2subtraction5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3subtraction5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4subtraction5nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5subtraction5nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1subtraction5nums - num2subtraction5nums - num3subtraction5nums - num4subtraction5nums - num5subtraction5nums));
        goto BackToMenuAnswerSubstraction;
    subtracter6nums:
        Console.Write("please write num1: ");
        double num1subtraction6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2subtraction6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num3: ");
        double num3subtraction6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num4: ");
        double num4subtraction6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num5: ");
        double num5subtraction6nums = int.Parse(Console.ReadLine());
        Console.Write("please write num6: ");
        double num6subtraction6nums = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + (num1subtraction6nums - num2subtraction6nums - num3subtraction6nums - num4subtraction6nums - num5subtraction6nums - num6subtraction6nums));
        goto BackToMenuAnswerSubstraction;
    BackToMenuAnswerSubstraction:
        Console.WriteLine("where do you want to go now?");
        Console.WriteLine("1. main menu");
        Console.WriteLine("2. subtraction menu");
        Console.WriteLine("3. end program");
        int MenuToMenuAnswerSubtraction = int.Parse(Console.ReadLine());
        switch (MenuToMenuAnswerSubtraction)
        {
            case 1: goto start;
            case 2: goto addition;
            case 3: goto end_program;
            default:
                Console.WriteLine(" you didn't pick any of the options. Please pick a valid option when we get you back to the menu.");
                Console.WriteLine("to continue press enter");
                Console.ReadKey();
                goto BackToMenuAnswerSubstraction;

        }

        exponent:
        Console.WriteLine("welcome to the exponent problem");
        Console.Write("please write num1: ");
        double num1exponent = int.Parse(Console.ReadLine());
        Console.Write("please write num2: ");
        double num2exponent = int.Parse(Console.ReadLine());
        Console.WriteLine($"the answer is " + Math.Pow(num1exponent,num2exponent));
    BackToMenuAnswerExponent:
        Console.WriteLine("where do you want to go now?");
        Console.WriteLine("1. main menu");
        Console.WriteLine("2. Exponent menu");
        Console.WriteLine("3. end program");
        int MenuToMenuAnswerExponent = int.Parse(Console.ReadLine());
        switch (MenuToMenuAnswerExponent)
        {

            case 1: goto start;
            case 2: goto exponent;
            case 3: goto end_program;
            default:
                Console.WriteLine(" you didn't pick any of the options.please pick a valid option when we get you back to the menu.");
                Console.WriteLine("to continue press enter");
                Console.ReadKey();
                goto BackToMenuAnswerExponent;

        }

    end_program:
        return;   
    }
}

我想这是一个学校项目,但至少你需要添加一些方法。最多一些 类。 goto 语句不被使用。答应我,当你找到工作时,你永远不会使用 goto 语句。

但要尝试回答您的问题,您可以添加一个列表,其中包含您每次执行操作时添加的内容。

class Program
{
    private static List<string> history = new List<String>();

    public static void Main()
    {
        // all you code
        // call AddHistory(...) for every operation being done
    }

    private static void AddHistory(string message)
    {
        history.Insert(0, message);

        if(history.Count > 10)
            history.Remove(10);
    }
}

未测试,心写