我是C#的新手。所以,我正在练习写一些简单的代码。 我决定编写一个代码,用户将输入一个数字,相同的数字将显示为输出。我写了下面的代码,它工作得很好。
然而,当我决定用Console.Read()替换Console.Readline()来查看输出是什么,并运行代码时,我发现输出是数字的第一个数字的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();
}
}
}
答案 0 :(得分:0)
从文档中,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
来清除任何未读的内容。