我使用ConsoleKeyInfo在C#中工作,但是当我试图在控制台中写大于9的数字时,Console.ReadKey会有问题,例如
ConsoleKeyInfo number;
Console.Write("Write a number: ");
number = Console.ReadKey();如果我想写10或11.控制台只读取"1“
我不想使用Console.ReadLine,因为我不想对每个数字按下"Enter“。
还有其他方法可以使用Console.ReadKey来等待1秒后才能继续吗?
谢谢
发布于 2011-04-11 13:49:53
您能做的最好的就是使用Console.ReadLine()。程序不可能知道你已经完成了这个号码。
更新
如果您有一个固定长度的数字(即13位ISBN),您可以使用ReadKey,但如下所示:
string isbn = "";
while (isbn.Length < 13)
{
isbn += Console.ReadKey().KeyChar;
}发布于 2011-04-11 13:51:04
正如关于这个问题的评论所指出的,Console.ReadKey只从定义上读取一个键。如果您想从控制台获得更多的输入,则需要使用不同的函数。举个例子,试试这样的东西:
Console.Write("Write a number: ");
string line = Console.ReadLine();
int num = 0;
if (line != null)
num = int.Parse(line);这是一个开始,最小的错误检查。看看你能从那里得到什么。
发布于 2022-06-14 08:41:56
这个想法是,您必须多次调用cki = Console.ReadKey(true)。
ConsoleKeyInfo cki;
string userNumber = "";
while(true)
{
System.Console.WriteLine("Press more than one key:");
cki = Console.ReadKey(true);
if(cki.Key == ConsoleKey.Escape)
{
System.Console.WriteLine("GOOD BYE!");
Environment.Exit(0);
}
else
{
if(char.IsNumber(cki.KeyChar) || cki.Key == ConsoleKey.Enter)
{
while(char.IsNumber(cki.KeyChar))
{
Console.Write(cki.KeyChar);
userNumber += (cki.KeyChar).ToString();
cki = Console.ReadKey(true); // !!! Main idea
}
System.Console.WriteLine();
System.Console.WriteLine($"Your number is: {userNumber}");
Environment.Exit(0);
}
else
{
System.Console.WriteLine("Wrong symbol! Input a number!");
}
}
}https://stackoverflow.com/questions/5622189
复制相似问题