2

我正在尝试制作一个需要一个数字的程序,然后将其重新添加到自身中。

例如:

  • 随机数为 6
  • 0 + 1 = 1
  • 1 + 2 = 3
  • 3 + 3 = 6
  • 6 + 4 = 10
  • 10 + 5 = 15
  • 15 + 6 = 21
  • 输出 21

这是我的代码:

int input = Console.Read();
int total = 0;
for (int i = 0; i <= input; i++)
{
    total += i;
}
Console.Write(total);

当我输入任何数字时,我会得到一个巨大的数字。例如,输入三个返回 1326。为什么?

4

2 回答 2

6

利用:

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

从控制台读取一个数字。您正在获取3char 的 ASCII 码,即51.

基本上与(int)'3'(给出51)相同

Console.ReadLine()从控制台读取整行作为string. 然后你调用int.Parse从该字符串中解析一个数字。

因此,如果您输入3并按enter,您将获得与以下相同的功能:

int input = int.Parse("3"); //input will have 3 as integer
int total = 0;
for (int i = 0; i <= input; i++)
{
    total += i;
}
Console.Write(total); //prints 6

注意:考虑使用int.TryParse,因为您永远不知道用户的输入是否可以表示为整数。如果您FormatException将错误的字符串传递到int.Parse.

于 2013-11-13T03:18:55.217 回答
3

这是因为Console.Read不读取表示为字符序列的整数的十进制表示(尽管它的签名另有说明)。它读取单个字符,并返回它的 ASCII 码。

字符代码'3'为51;从 0 到 51 的数字之和为 51*52/2=1326,即打印出来的数字。

于 2013-11-13T03:19:19.017 回答