【问题标题】:Missing something in my C# count for integers code在我的 C# 整数代码计数中缺少某些内容
【发布时间】:2015-01-12 11:54:17
【问题描述】:

我正在为学校做一些练习,但遇到了问题。 当我尝试计算数组中的字符时,它只会返回数组本身。 谁能告诉我我错过了什么?代码在 C# 中。

public static int CountFor(int n)
{
        int count = 0;

        int[] a = new int[] {n};
        for (int i = 0; i < a.Length; i++)
        {
            count += i;
        }
        return count;
} 

并在主要显示结果:

Console.WriteLine(CountFor(1024));
Console.ReadKey();

【问题讨论】:

  • Visual Studio 有一个内置调试器,它比在 Stack Overflow 上发布更快、更准确、更令人满意。放置一个断点 (F9) 并单步执行您的代码 (F10) 并检查您的变量以查看您的代码在做什么。代码 a = new int[] {n} 没有按照您的预期执行,这是您的问题的根本原因。通过检查它,您可能会伪造“它只是返回数组本身”的问题陈述,但事实并非如此。

标签: c# arrays for-loop character counting


【解决方案1】:

改变

new int[] {n}

new int[n]

使用new int[] {n},您有一个包含1 元素的数组作为n

阅读:Arrays Tutorial

您可以轻松地使用Enumerable.RangeEnumerable.Sum 方法来简化您的方法,例如;

public static int CountFor(int n)
{
   return Enumerable.Range(1, n).Sum();
} 

【讨论】:

  • 感谢您的快速回答!
  • 但是控制台返回 523776 而它应该返回 4 因为 1024 包含 4 个整数。你能解释一下吗?
  • @Johan 您的代码添加了1+2+3+...+1024。您可以使用调试器自己找出答案。如果你想计算一个整数的位数,那是另一个问题,在How can I get a count of the total number of digits in a number? 中有回答。
  • 再次感谢,我可以自己解决剩下的问题。
【解决方案2】:

你需要使用new int[n],否则你会生成一个长度为1的新数组,传入的整数作为数组的内容

【讨论】:

  • 感谢您的解释
猜你喜欢
  • 1970-01-01
  • 2017-04-11
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 2020-10-10
  • 2019-10-09
  • 1970-01-01
相关资源
最近更新 更多