输入密钥后CMD关闭

本文关键字:关闭 CMD 密钥 输入 | 更新日期: 2023-09-27 18:37:22

我正在使用Visual Studio 2015,转到项目文件夹>bin>debug>ConsoleApplication1并打开它,命令提示符打开并说:键入一个数字,任何数字! 如果我按任何键,命令提示符会立即关闭,再次尝试删除和编码但没有使用,仍然关闭,但是在Visual Studio中,当我按Ctrl + F5时,一切正常。

 class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Type a number, any number!");
        ConsoleKeyInfo keyinfo = Console.ReadKey();
        PrintCalculation10times();
        if (char.IsLetter(keyinfo.KeyChar)) 
        {
            Console.WriteLine("That is not a number, try again!");
        }
        else
        {
            Console.WriteLine("Did you type {0}", keyinfo.KeyChar.ToString());
        }
    }
    static void PrintCalculation()
    {
        Console.WriteLine("Calculating");
    }
    static void PrintCalculation10times()
    {
        for (int counter = 0; counter <= 10; counter++)
        {
            PrintCalculation();
        }
    }
}

输入密钥后CMD关闭

在控制台应用程序中,我通常会在 main() 方法的末尾添加一些内容,以防止程序在读取输出之前关闭。或者在可以从任何控制台应用调用的单独实用工具方法中实现它...

while (Console.ReadKey(true).Key != ConsoleKey.Escape)
{
}

如果您愿意,您可以在此之后放置任何其他退出代码。

或者,您可以像这样处理 Ctrl-C:如何在 C# 控制台应用中捕获 ctrl-c 并在之后处理它。

这应该可以解决问题,请参阅我添加到代码中的注释以了解原因。

static void Main(string[] args)
{
    Console.WriteLine("Type a number, any number!");
    ConsoleKeyInfo keyinfo = Console.ReadKey();
    PrintCalculation10times();
    if (char.IsLetter(keyinfo.KeyChar)) 
    {
        Console.WriteLine("That is not a number, try again!");
    }
    else
    {
        Console.WriteLine("Did you type {0}",keyinfo.KeyChar.ToString());
    }
    //Without the something to do (as you had it) after you enter anything it writes a 
    //line and then has nothing else to do so it closes. Have it do something like this below to fix thisd.
    Console.ReadLine(); //Now it won't close till you enter something.
}

编辑者请求添加此内容。答案是@ManoDestra在我看到他回应之前

给出的。

您的循环将运行 11 次(对于 (int 计数器 = 0;计数器 <= 10;计数器++))。从 0 到 10(含 0 和 10)。使其<10 或从 1 开始。– 马诺德斯特拉

static void PrintCalculation10times()
{
    for (int counter = 0; counter < 10; counter++) //Changed with
    {
        PrintCalculation();
    }
}