首页 > 解决方案 > 如何重新设计此代码以避免 goto?

问题描述

好吧,我遇到了这个问题,因为我开始使用 C# 并编写了一个控制台计算器,但我使用goto了它,但我听说不使用它,但我不知道使用什么其他指令来让它像我一样工作想要它。我把我的代码(它不长)贴在这里,所以也许你可以看看它并给我一些提示。谢谢!

base:
        Console.WriteLine("First number");
        double first = double.Parse(Console.ReadLine());
        Console.WriteLine("Second number");
        double second = double.Parse(Console.ReadLine());

        Console.WriteLine("What operation do you want to perform? \n1 - addition \n2 - subtraction \n3 - multiplication \n4 - division");
        string choice = Console.ReadLine();
        if (choice == "1")
        {
            Console.WriteLine(first + second);
            Console.ReadLine();
        }
        if (choice == "2")
        {
            Console.WriteLine(first - second);
            Console.ReadLine();
        }
        if (choice == "3")
        {
            Console.WriteLine(first * second);
            Console.ReadLine();
        }

        else if (choice == "4" && second == 0)
        {             
            Console.WriteLine(" Do not divide by zero");                
        }
        if (choice == "4")
        {
            Console.WriteLine(first / second);
            Console.ReadLine();
        }

        Console.WriteLine("Next one? \n1 - Yes \n2 - No");
        string chc2 = Console.ReadLine();
        if (chc2 == "1")
        {
            goto base;
        }
        if  (chc2 == "2")
        {
            Console.WriteLine("Bye bye");
            Console.ReadKey();                

        }

标签: c#consoleuser-experience

解决方案


使用循环。这是一种常见的方式:

while (true) {
    // do some stuff
    Console.WriteLine("Next one? \n1 - Yes \n2 - No");
    string chc2 = Console.ReadLine();
    if (chc2 == "1")
    {
        continue; // means go back to the top of the loop
    }
    if  (chc2 == "2")
    {
        Console.WriteLine("Bye bye");
        Console.ReadKey();                
        break; // means break out of the loop
    }
}

推荐阅读