控制台没有输出我期望的内容

时间:2013-11-13 03:16:58

标签: c#

我正在尝试创建一个会接受数字的程序,然后重新添加它。

例如:

  • 随机数为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.为什么?

2 个答案:

答案 0 :(得分:6)

使用:

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

从控制台读取一个数字。您将获得3 char的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

答案 1 :(得分:3)

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

字符'3'的代码是51; the sum of numbers from zero to 51是51 * 52/2 = 1326,即打印的数字。