在While循环中编写Console.ReadLine时缺少输入

时间:2019-04-06 15:25:14

标签: c# loops console-application

我有两条输入线可以接受用户输入,但是在While循环中书写时,第一个用户输入将被忽略

我已经在C#上尝试过了,但是while循环和两行用户输入都被接受了。

在不使用While循环的情况下执行以下代码时的第一个控制台窗口 Without While Loop

第二个控制台窗口,当封装在While循环中时(n =两个用户输入都在一行上,并且焊料数量为空。 enter image description here

    public static void Main(string[] args)
    {
        String numSoldiers; //number of soldiers
        String arms; // power
        int Q = 1;

        while (Q <= 4)
        {
            Console.Write("Enter Total Number of Soldiers: ");
            numSoldiers = Console.ReadLine();

            Console.Write("Enter number of arms: ");
            arms = Console.ReadLine();

            Console.WriteLine("There are " + numSoldiers + " soldiers and " + arms + " arms");

            Console.Read();

            Q++;
        }
    }
}

2 个答案:

答案 0 :(得分:4)

我想您想让用户在循环继续下一次迭代之前按Enter键,对吗?这就是为什么您在循环快结束时调用Console.Read()的原因。

但是,Console.Read仅读取1个字符,但是当您按Enter键时,实际上实际上输入了2个字符(至少在Windows上是),分别是\r\nConsole.Read读取\r,而未读\n

在循环的下一个迭代中,对Console.ReadLine的第一次调用将读取\n,它是一个空行,因此它返回一个空字符串。请注意,它不会等待用户输入任何内容,因为它会看到仍有一些未读字符。

要解决此问题,您可以呼叫ReadKey而不是Read

Console.ReadKey();

答案 1 :(得分:2)

尝试更换:

Console.Read();

...具有:

Console.WriteLine();
Console.ReadKey(true);