Чтение двух символов в C # - PullRequest
3 голосов
/ 02 марта 2011

Я не могу прочитать второй символ с помощью метода Console.Read ().Я имею в виду, что я не получаю приглашение прочитать второй символ с клавиатуры.Любая помощь, пожалуйста?Кроме того, я понимаю, что по умолчанию это символ типа int, но нам все еще нужно преобразовать его в символ при чтении с ввода, правильно?Код ниже читает первый символ, но заканчивается вторым.

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 ]

8 голосов
/ 02 марта 2011

Похоже, Console.ReadKey() - это то, что вы на самом деле хотите.

4 голосов
/ 02 марта 2011

См. Console.Read . Конкретно эта часть:

Метод Read блокирует возврат при вводе символов ввода; он заканчивается, когда вы нажимаете клавишу Enter. Нажатие клавиши Enter добавляет платформо-зависимую последовательность завершения строки к вашему вводу (например, Windows добавляет последовательность перевода строки при возврате каретки). Последующие вызовы метода Read возвращают ваш ввод по одному символу за раз. После получения последнего символа Read снова блокирует его возврат и цикл повторяется.

3 голосов
/ 02 марта 2011

Возможно, этот код ближе к тому, что вы ищете ...

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);
}
2 голосов
/ 02 марта 2011

Ваш второй 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);
}
...