成功运行后如何使我的控制台应用程序自动重启?

时间:2012-08-13 09:15:43

标签: c# function console-application calculator

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

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;
    }

        }
    }

6 个答案:

答案 0 :(得分:6)

包裹你的代码
while(true) {
    // Your code here

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

如果您不熟悉编程,则应该查看Loops - 参见清单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;
        }

    }
}

答案 1 :(得分:1)

首先,为了使程序继续,你必须将它包装成while(true)循环,或者while {while while(某些键被按下)循环。无论如何,你必须在你的选项列表中添加第五个选项^^(这将是退出选项)

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

  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循环

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

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

    这就是do-while循环。你不需要调用一个特殊的exit方法,因为程序只会跳出do while循环,并像现在一样(通常)关闭它。

    老实说,我宁愿选择do-while循环,因为它也可以处理键的组合。 有关详情,请访问此链接:http://www.dotnetperls.com/console-readkey

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

你需要研究while loops的使用,这是你在这里使用的方法,让你的程序保持循环,直到满足某些条件,即选择了计算然后第一个值已经进入,然后是第二个。类似的东西:

static void Main(string[] args)
{
    // main loop to keep your program alive
    while (true)
    {
        // handle your program logic
    }
}

答案 4 :(得分:0)

将您的代码放入do block

        char c = '';
        do
        {
            c = ...
        }
        while (c != 'q');

答案 5 :(得分:0)

你可以使用goto命令迭代技术中的任何一种函数调用不满意的同时或者执行while循环,通过infinte for loop