即使我输入y值为' y',循环仍然关闭。 如果我输入值' y',则会询问"您要继续吗?按y"并且循环关闭而不要求输入新的y值。
char y = 'y';
while (y == 'y')
{
Console.WriteLine("Do you want to continue? Press y");
y = (char)Console.Read(); //here the problem starts
}
答案 0 :(得分:1)
Console.Read()阻塞等待输入并通过按下回车键来终止,该回车键附加一个回车,它将在下一次循环中读取。这是为什么Read()不是当您需要根据用户输入重定向流时的最佳选项,而不是您有其他选项:
首先:通过放置一条读取线来消耗输入缓冲区的其余部分,如下所示:
char y = 'y';
while (y == 'y')
{
char temp;
Console.WriteLine("Do you want to continue? Press y");
y = (char)Console.Read();
Console.ReadLine();
}
第二:简单地将Read()替换为ReadLine()将char更改为字符串,或者如果要保留char这样:
y = (char)Console.ReadLine()[0];
第三:使用ReadKey():
ConsoleKeyInfo key = Console.ReadKey();
y = key.KeyChar;
Console.WriteLine();