当输入两个/多个数字时,Console.Read()是否将第一个数字作为输入?

时间:2018-06-05 06:34:46

标签: c# console.readline

我是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();

        }
    }
}

1 个答案:

答案 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来清除任何未读的内容。