Принимает ли Console.Read () первую цифру в качестве ввода, когда введено двузначное число? - PullRequest
0 голосов
/ 05 июня 2018

Я новичок в C #.Итак, я тренировался, написав несколько простых кодов.Я решил написать код, в котором пользователь будет вводить число, и тот же номер будет показан в качестве вывода.Я написал следующий код, и он работал отлично.

Однако, когда я решил заменить Console.Readline () на Console.Read (), чтобы увидеть, что будет выводом, и запустил код, я обнаружил, что вывод - это код ASCII первой цифры.числа, которое я ввел.[То есть, когда я ввел 46, результат был 52.]

Принимая во внимание, что когда я использовал Console.ReadLine (), было показано все двухзначное число.

По моему мнению, Разве Console.Read () не должна отображать только первую цифру введенного числа, а Console.ReadLine () - полное число?

using System;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            int num1;
            Console.Write("Enter a number:");
            num1 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("The number is: " + num1);
            Console.ReadKey();

        }
    }
}

1 Ответ

0 голосов
/ 05 июня 2018

Из документации Console.Read возвращает:

Следующий символ из входного потока или отрицательный (-1), если в данный момент больше нет символов для чтения.

как int.

int - это значение ASCII прочитанного символа.Вам просто нужно привести к char, чтобы получить символ:

int characterRead = Console.Read();
if (characterRead != -1) {
    char c = (char)characterRead;

    // if you want the digit as an int, you need
    int digit = Convert.ToInt32(c.ToString());
}

Также обратите внимание, что при повторном вызове Console.Read будет прочитана вторая цифра.Если вы хотите пропустить это, вам нужно позвонить на Console.ReadLine, чтобы очистить все, что не прочитано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...