1

我最近开始用 C# 编写代码,所以我现在只是在学习基础知识。我试图通过谷歌和这个网站搜索这个,但是,我找不到任何解决方案,但基本上当我执行 Console.Read() 并接受输入并将其存储到一个整数变量中时,我输入的值在输出时奇怪地不同。

这是我要运行的代码块:

        Console.WriteLine("Welcome To The Program!");
        Console.Write("Enter the radius of the sun: ");
        input = Console.Read();
        Console.WriteLine(input);
        Console.ReadKey();

输入是 int 类型,当我输入 5 时,它会输出 53。如果我输入 0,它将输出 48。

谁能解释为什么会发生这种情况?我知道有一种方法可以通过首先将其作为字符串输入然后将其解析为整数来解析输入,但是对于较大的代码段来说这将花费太长时间。

4

4 回答 4

4

将其放入其中,Convert.ToInt32因为您正在将该行作为字符串值读取,如下所示:

input = Convert.ToInt32(Console.Read());

于 2013-05-17T01:41:45.977 回答
2

作为记录,这不起作用的原因是因为 Console.Read 返回控制台中输入的第一个字符的 ASCII 整数表示。“5”在屏幕上回显53的原因是这样的:

Console.Read 开始从控制台的 In 流中读取。流中的第一个字符是“5”。'5' 的 ASCII 值是 53。“输入”的值是 53。

这应该可以解决您的问题:

input = int.Parse(Console.ReadLine());

您还可以更好地使用它:

int number;
if(!int.TryParse(Console.ReadLine(), out number)){
  Console.WriteLine("Input was not an integer.");
  return;
}
Console.WriteLine(number);
于 2013-05-17T01:43:30.917 回答
1

您正在接收相关字符的 ASCII 值。为了得到你想要的,你必须接受一个字符串然后解析它。它需要的时间比你想象的要少。

于 2013-05-17T01:43:47.490 回答
-1

如果您一次只想读取一个字符,则可以使用以下命令:

int input = int.Parse(((char)Console.Read()).ToString());

这将获取代码点的字符,然后在解析之前将其转换为字符串。但是,如果您要输入多个字符,或者输入可能不是数字,那么您应该查看HeshamERAQI 的回复。

于 2013-05-17T01:53:36.507 回答