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



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

从文档中,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以清除任何未读的内容。

最新更新