【问题标题】:Does Console.Read() takes the first digit as input when a two/more digit number as entered?Console.Read() 在输入两位/多位数字时是否将第一位数字作为输入?
【发布时间】:2018-06-05 06:34:45
【问题描述】:

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

        }
    }
}

【问题讨论】:

  • 我已经搜索了您提供的链接,但找不到足够的信息来消除我的所有疑问。从那里我知道 ReadLine() 读取整个字符串,而 Read() 只读取第一个字符。但我的疑问是,为什么在使用 Read() 时,它显示第一个数字的 ASCII 码,而 ReadLine() 显示整个数字而不是 ASCII 码。
  • @RajdeepDutta:提示:查看Console.Read() 的返回类型。它是int,因此它可以使用-1 来指示数据流的结束。如果值不是 -1,只需转换回 char 以获取输入的 文本
  • 您似乎发布了许多意见,但我无法在此处找到一个连贯的问题来回答。

标签: c# console.readline


【解决方案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 以清除所有未读内容。

【讨论】:

  • 谢谢。这是完美的。
  • 是的,我做到了。不知道为什么它没有被标记。可能我双击了。对不起。
猜你喜欢
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 2018-03-14
  • 1970-01-01
  • 2018-11-16
  • 1970-01-01
  • 2022-12-20
  • 1970-01-01
相关资源
最近更新 更多