在C#中读取两个字符

时间:2011-03-02 02:06:08

标签: c# .net char buffering

我无法使用Console.Read()方法读取第二个字符。我的意思是我没有得到任何提示从键盘读取第二个字符。有什么帮助吗?另外,我理解字符默认是一个int但我们仍然需要在从输入读取时将其转换为char,是不是?下面的代码读取第一个char,但终止于第二个。

public static void Main()
    {
        Console.WriteLine("The First Character?:");
        char firstChar=Convert.ToChar(Console.Read());

        Console.WriteLine("The Second Character?:");
        char secondChar=Convert.ToChar(Console.Read());
    }

4 个答案:

答案 0 :(得分:8)

看起来Console.ReadKey()就是你真正想要的。

答案 1 :(得分:4)

请参阅Console.Read。具体来说,这部分:

  

当您键入输入字符时,Read方法会阻止其返回;按Enter键时它会终止。按Enter键会将与平台相关的行终止序列附加到输入中(例如,Windows附加回车换行符序列)。对Read方法的后续调用一次检索输入的一个字符。检索完最后一个字符后,Read会再次阻止其返回并重复循环。

答案 2 :(得分:3)

也许这段代码更接近您所寻找的......

public static void Main()
{
        Console.WriteLine("The First Character?:");
        char firstChar = Convert.ToChar(Console.ReadKey().KeyChar);
        Console.WriteLine();
        Console.WriteLine("The Second Character?:");
        char secondChar = Convert.ToChar(Console.ReadKey().KeyChar);
}

答案 3 :(得分:2)

你的第二个Console.Read()正在消耗回车,终止第一次阅读。

Console.ReadKey使用起来有点友善,因为它不需要终止回车。如果要继续使用Console.Read,可以在第二个提示之前尝试使用并丢弃回车符,例如:

public static void Main()
{
    Console.WriteLine("The First Character?:");
    char firstChar = Convert.ToChar(Console.Read());

    Console.Read(); // consume carriage return

    Console.WriteLine("The Second Character?:");
    char secondChar = Convert.ToChar(Console.Read());

    Console.WriteLine(secondChar);
}