0

以下代码询问您的姓名和姓氏。

class Program
{
        static void Main(string[] args)
        {
            Console.Write("Enter your name: ");
            string s = Console.ReadLine();
            Console.WriteLine("Your name: " + s);
            Console.Write("Enter your surname: ");
            int r = Console.Read();
            Console.WriteLine("Your surname: " + r);

            Console.ReadLine();
        }
}

输入名称后,程序成功显示您的输入。但是,输入姓氏后,程序会立即停止。据我了解, Console.Read() 应该返回我输入的字符串的第一个字符的 int 值(ASCII 码?)。

为什么程序在 Console.Read() 之后立即终止?Console.ReadLine() 不应该确保程序保持打开状态吗?我正在使用 Visual Studio 2012。

4

2 回答 2

2

当您告诉控制台输入您的姓氏时,您要求输入一个字符。

Console.Write("Enter your surname: ");
int r = Console.Read();

这肯定应该是一个 ReadLine,然后是退出前的另一个 ReadLine。您可能正在输入第一个字符(进入 Read),然后是后续字符,然后按 Enter 以接受姓氏,但您实际上是在将退出的 ReadLine 上。所以:

class Program
{
    static void Main(string[] args)
    {
        Console.Write("Enter your name: ");
        string s = Console.ReadLine();
        Console.WriteLine("Your name: " + s);
        Console.Write("Enter your surname: ");

        // change here
        string surname = Console.ReadLine();
        Console.WriteLine("Your surname: " + surname);

        Console.ReadLine();
    }
}

对我来说,在 int r = Console.Read() 之后程序不会终止。

于 2015-10-12T12:25:53.130 回答
1

根据控制台应用程序的运行方式,它将执行所有代码行,然后“返回”。一旦完成,这将关闭程序,因为它已经完成了它需要做的所有意图和目的。完成后,它不会坐在那里打开。

如果您希望它保持窗口打开,请Console.Readline()在最后写入,它将保持打开状态,直到完成某些输入。我记得刚开始的时候遇到过这个问题,这不是程序意外关闭的问题,而是你想在控制台关闭之前看到结果。

于 2015-10-12T12:23:47.963 回答