我有两条输入线可以接受用户输入,但是在While循环中书写时,第一个用户输入将被忽略
我已经在C#上尝试过了,但是while循环和两行用户输入都被接受了。
在不使用While循环的情况下执行以下代码时的第一个控制台窗口
第二个控制台窗口,当封装在While循环中时(n =两个用户输入都在一行上,并且焊料数量为空。
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++;
}
}
}
答案 0 :(得分:4)
我想您想让用户在循环继续下一次迭代之前按Enter键,对吗?这就是为什么您在循环快结束时调用Console.Read()
的原因。
但是,Console.Read
仅读取1个字符,但是当您按Enter键时,实际上实际上输入了2个字符(至少在Windows上是),分别是\r
和\n
。 Console.Read
读取\r
,而未读\n
。
在循环的下一个迭代中,对Console.ReadLine
的第一次调用将读取\n
,它是一个空行,因此它返回一个空字符串。请注意,它不会等待用户输入任何内容,因为它会看到仍有一些未读字符。
要解决此问题,您可以呼叫ReadKey
而不是Read
。
Console.ReadKey();
答案 1 :(得分:2)
尝试更换:
Console.Read();
...具有:
Console.WriteLine();
Console.ReadKey(true);