按Enter键时出错,C#控制台
我的代码要求用户输入一个字母(将按Enter键时出错,C#控制台,c#,error-handling,key,enter,C#,Error Handling,Key,Enter,我的代码要求用户输入一个字母(将字符串转换为字符),但当按enter键作为输入时,代码崩溃 我没有设置任何条件来向用户发送错误消息,即在输入时不按Enter键,只输入字母 以下是我正在努力解决的问题: public static char GetLetter(string prompt) { char result; Console.Write("\n\t" + prompt + ": "); result = Convert.ToChar(Console.ReadL
字符串
转换为字符
),但当按enter键作为输入时,代码崩溃
我没有设置任何条件来向用户发送错误消息,即在输入时不按Enter键,只输入字母
以下是我正在努力解决的问题:
public static char GetLetter(string prompt)
{
char result;
Console.Write("\n\t" + prompt + ": ");
result = Convert.ToChar(Console.ReadLine());
if(result == '!' || result == '@' || result == '#' || result == '$' || result == '%' )
// we can keep going with all the unwanted characters and numbers
{
Console.WriteLine("\n\t NO MATCH ! \n\t ,please try again using letters only , ");
result = GetLetter(prompt);
return result;
}
return result;
}
Console.ReadLine()
将返回一个字符串,而不是char
,请使用Console.Read
。检查来自MSDN的属性,输入时会出现错误,因为您得到的是空字符串,因此无法将其转换为字符
我建议你这样做:
char result;
string input = Console.ReadLine();
if (char.TryParse(input, out result))
{
//The input is a char - write your code here.
}
//The input is not a char.
您可以使用Console.ReadKey()
函数读取字符,如下所示:
public static char GetLetter(string prompt)
{
char result;
Console.Write("\n\t" + prompt + ": ");
result = Console.ReadKey().KeyChar;
if (result == '!' || result == '@' || result == '#' || result == '$' || result == '%')
// we can keep going with all the unwanted characters and numbers
{
Console.WriteLine("\n\t NO MATCH ! \n\t ,please try again using letters only , ");
result = GetLetter(prompt);
return result;
}
return result;
}
我们需要看到实际的错误,input.Console.ReadKey可以做到,不是吗?@AlexandreTryHardLeblanc,正是我要去的地方;这是更正确的方法,但我仍然对实际的错误和输入有点好奇。啊,当我按下任何字母键时,它给了我结果,我不需要按回车键。这也是一个很好的结果,谢谢。你知道让用户只输入字母的更好方法吗?因为我认为我的代码中包含了所有的| | OR:/你可以使用IsLetter方法,如下所示:if(char.isleter(result))