0

用户选择选项后,如何使该程序继续运行?这是我到目前为止的代码。

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

namespace calculator_extended
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Press A for addition");
            Console.WriteLine("Press S for subtraction");
            Console.WriteLine("Press M for Multiplication");
            Console.WriteLine("Press D for Divide");

            char c = Convert.ToChar(Console.ReadLine());

            int a = Convert.ToInt32(Console.ReadLine());
            int b = Convert.ToInt32(Console.ReadLine());

            switch (c)
            {
                case 'A':
                case 'a':
                    {
                        int d = add(a, b);
                        Console.WriteLine(d);
                        break;


                    }


                case 'S':
                case 's':
                    {
                        int d = sub(a, b);
                        Console.WriteLine(d);
                        break;
                    }

                case 'M':
                case 'm':
                    {
                        int d = mul(a, b);
                        Console.WriteLine(d);
                        break;
                    }

                case 'E':
                case 'e':
                    {
                        int d = div(a, b);
                        Console.WriteLine(d);
                        break;
                    }
                default:
                    {

                        Console.WriteLine("Please Enter the correct Character");
                        break;
                    }


            }
        }
            private static int add(int a, int b)
    {

                   return a + b;
    }
               private static int sub(int a, int b)
    {

                   return a - b;
    }
               private static int mul(int a, int b)
    {
                   return a * b;
    }
               private static int div(int a, int b)
    {

                   return a / b;
    }

        }
    }
4

6 回答 6

6

while(true) {
    // Your code here

    // Don't forget to add a switch case for an Exit operation
    case 'q':
        Application.Exit();
}

如果你是编程新手,你应该看看循环——见清单 4-2——这是你想要完成的一个很好的例子。

编辑:我意识到你是编程新手,我认为你应该自己完成这个。因为这是一个基本问题,这里有一个完整的解决方案

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

namespace calculator_extended
{
    class Program
    {
        static void Main(string[] args)
        {
            int d = 0;

            while (true)
            {
                Console.WriteLine("Press A for addition");
                Console.WriteLine("Press S for subtraction");
                Console.WriteLine("Press M for Multiplication");
                Console.WriteLine("Press D for Divide");

                char c = Convert.ToChar(Console.ReadLine());

                int a = Convert.ToInt32(Console.ReadLine());
                int b = Convert.ToInt32(Console.ReadLine());

                switch (c)
                {
                    case 'A':
                    case 'a':
                        d = add(a, b);
                        Console.WriteLine(d);
                        break;
                    case 'S':
                    case 's':
                        d = sub(a, b);
                        Console.WriteLine(d);
                        break;
                    case 'M':
                    case 'm':
                        d = mul(a, b);
                        Console.WriteLine(d);
                        break;
                    case 'E':
                    case 'e':
                        d = div(a, b);
                        Console.WriteLine(d);
                        break;
                    case 'q':
                    case 'Q':
                        Application.Exit();
                    default:
                        Console.WriteLine("Please Enter the correct Character");
                        break;
                }
            }
        }
        private static int add(int a, int b)
        {

            return a + b;
        }
        private static int sub(int a, int b)
        {

            return a - b;
        }
        private static int mul(int a, int b)
        {
            return a * b;
        }
        private static int div(int a, int b)
        {

            return a / b;
        }

    }
}
于 2012-08-13T09:17:43.720 回答
1

首先,为了让程序继续运行,您必须将其包装到 while(true) 循环或 do{}while(some key is press) 循环中。无论如何,您必须在选项列表中添加第五个选项^^(这将是退出选项)

我相信要解决您的问题,您有两种选择:

  1. 使用 while(true) 循环

    main() 方法中的所有代码都将包装在一个 while(true) 循环中。完成此操作后,您将读取退出键,就像任何其他键(A、S、M、D)一样,并将其发送到正确的退出方法。此“退出方法”将在您的主要功能之外创建。完成后,它应该看起来像这样:

    static void Main(string args[])
    {
        Console.WriteLine("Press A for addition");
        Console.WriteLine("Press S for subtraction");
        Console.WriteLine("Press M for Multiplication");
        Console.WriteLine("Press D for Divide");
        Console.WriteLine("Press X to exit");
        //... all the stuff up to the switch
        switch(c)
        {
            //all the cases from before
            case 'x' : exitMethod();break;
        }
    }
    private static void exitMethod()
    {
        Application.Exit();
    }
    
  2. 使用 do - while 循环

main() 方法中的所有代码都将包装在一个 do - while 循环中。是的,它类似于使用 while(true) 循环,但这次您必须更改 while 中的语句。它会是这样的:

    do { // here is all the code in main() 
    }while(Console.ReadKey(true).Key != ConsoleKey.X);

这就是 do - while 循环。您不需要调用特殊的退出方法,因为程序将跳出 do while 循环,并像现在(通常)一样关闭自己。

老实说,我宁愿使用 do - while 循环,因为它也可以处理组合键。有关更多信息,请访问此链接: http: //www.dotnetperls.com/console-readkey

于 2012-08-13T10:03:37.877 回答
0

您可以通过 goto 命令使用任何迭代技术,通过 unsatisfactory while 或 do while 循环,通过 infinte for 循环调用函数

于 2012-08-13T09:46:23.087 回答
0

这可以通过循环来解决。对于这种控制台应用程序,我通常会使用 Do...While 循环。

你在学习的过程中会遇到这些事情......我建议你在尝试编写你还没有技能完成的代码之前,继续遵循你正在做的任何指导学习课程。

于 2012-08-13T09:18:29.250 回答
0

您需要研究while 循环的使用,这就是您在此处使用的方法,以使您的程序继续循环,直到满足某些条件,即选择了计算,然后输入了第一个值,然后输入了第二个. 就像是:

static void Main(string[] args)
{
    // main loop to keep your program alive
    while (true)
    {
        // handle your program logic
    }
}
于 2012-08-13T09:20:45.000 回答
0

将您的代码放入do block

        char c = '';
        do
        {
            c = ...
        }
        while (c != 'q');
于 2012-08-13T09:22:53.280 回答