【问题标题】:Having Issues in calculating Sum of digits in C# [duplicate]在 C# 中计算数字总和时遇到问题 [重复]
【发布时间】:2019-10-10 17:48:35
【问题描述】:

我有一个任务来计算 C# 中的数字总和。以本例为例。我喜欢计算“12345”的总和,即:1+2+3+4+5 = 15。但是执行代码后的结果是:53。代码中的错误是什么?

static void Main(string[] args)
{
    string inputNumber = "12345";

    int sum =0;
    Console.WriteLine("Please Enter Your Desired Number");

    for (int i = 0; i < 5; i++)
    {
        Console.WriteLine(inputNumber[i]);
        sum = sum + Convert.ToInt32(inputNumber[i]);

        Console.WriteLine(sum);
    }
}

【问题讨论】:

  • 这一行的输出是什么:Console.WriteLine(inputNumber[i]);?
  • 比较Convert.ToInt32(1)的输出和Convert.ToInt32('1')的输出。
  • 在将char转换为int之前调用tostring:sum = sum + Convert.ToInt32(inputNumber[i].ToString());

标签: c# visual-studio


【解决方案1】:

将char 转换为int 不同于将string 转换为int 对于char,使用ASCII 值。

sum = sum + Convert.ToInt32(inputNumber[i].ToString());

如果您将char 转换为string,它将按照您的预期进行。

【讨论】:

  • 我想补充一点,如果你想确定你可以使用Int32.Parse(),因为如果你尝试输入一个字符,它会抛出一个错误。
  • @vvilin:我对这种方法持观望态度。并不是说它不起作用,而是Convert.ToFoo 通常比Foo.Parse 更好用。
  • 感谢您的回复。它帮助我解决了问题。
【解决方案2】:

您的问题是“Convert.ToInt32”正在返回 ascii 值并且您正在寻找数值,您的代码可能是这样的:

sum = sum + Convert.ToInt32(Char.GetNumericValue(inputNumber[i]));

有关 GetNumericValue 的更多信息,请点击以下链接: get numeric value msdn

【讨论】:

    【解决方案3】:

    抱歉回答错了。

    这就是问题所在:

    Convert.ToInt32(inputNumber[i].ToString());
    

    如果你不把它转换成字符串,它就是一个字符。 并且将 char 转换为 int 将给出其 ASCII 值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多