2

我的代码要求用户输入一个字母(转换stringchar),但是当按下该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;
}
4

3 回答 3

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.
于 2013-11-08T17:49:13.657 回答
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;
}
于 2013-11-08T17:49:27.313 回答
1

Console.ReadLine()将返回 a string,而不是 a char,使用Console.Read。查看MSDN的详细信息

于 2013-11-08T17:48:40.850 回答