Принимает ли Console.Read() первую цифру в качестве ввода, когда введено двузначное число?
Я новичок в 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 ответ
Из документации, 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
очистить все, что не прочитано.