我的代码要求用户输入一个字母(将string
转换为char
),但是当按 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;
}
答案 0 :(得分:3)
您输入时收到错误,因为您收到一个空字符串,因此无法将其转换为char。
我会建议你这样做:
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.
答案 1 :(得分:2)
您可以使用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;
}
答案 2 :(得分:1)
Console.ReadLine()
将返回string
,而不是char
,而是使用Console.Read
。查看来自MSDN的details