在C#中添加从1到N的数字

时间:2012-10-25 00:47:35

标签: c# while-loop

我正在用C#编写代码并试图在数字1和N之间添加所有数字,N是在文本框中输入的数字。我这样做,至少试图这样做,把它放进一个while循环。

之前我已经在2个文本框之间添加了所有数字,但出于某种原因,我让自己疯了,无法解决这个问题。我是一名初学者,所以请保持温和。

非常感谢任何帮助。

编辑: 我试过的六千件事之一。我认为这让我处于无限循环中?

       private void btnAddAll_Click(object sender, EventArgs e)
       {
           int n;
           int count = 0;
           int answer = 0;

           n = int.Parse(txtNum.Text);

           count = n;

           while (count >= 1)
           {
               answer = answer + count;
               count++;
           }
               lstShow.Items.Add("Sum = " + answer);
               lstShow.Text = answer.ToString();
       }

4 个答案:

答案 0 :(得分:8)

为什么不使用高斯公式。 (N *(N + 1))/ 2

private void btnAddAll_Click(object sender, EventArgs e)
{
     int n, answer;  
     n = int.Parse(txtNum.Text);
     answer = (n*(n+1))/2;
     lstShow.Items.Add("Sum = " + answer);
     lstShow.Text = answer.ToString();
}

答案 1 :(得分:3)

您的编辑:您应该减少计数.. 另一个编辑,似乎我需要解释更多: 通过减量,我的意思是--。 post或pre decrement运算符将值减1。

如果计数持续增加1,则永远不会满足 count> = 1 。您需要将计数减少为1 ..因此count--;

另外,我建议您使用TryParse(string,out int) ;或至少将Parse电话打包在try catch block

这是伪代码中的指针:

GetInput From User
TryParse Input
If Between 1 and N
Declare sum = 1;

for i to N-1 
   sum+=i; 

/* if you don't want to use the for loop
  while i < N 
  sum+=i;
  inc i; */
Print sum

答案 2 :(得分:1)

如果您将++更改为--,则应该按照您的意愿进行操作。

   int n;
   int count = 0;
   int answer = 0;

   n = 3;

   count = n;

   while (count >= 1)
   {
       answer = answer + count;
       count--; // here was the error
   }

   Console.WriteLine (answer);

输出:6

此外,只是为了一个额外的兴趣,你可以使用它使用Enumerable.RangeEnumerable.Sum而不是while循环(可能超出了预期的功课,但知道什么是有用的是有用的有)。

answer =  Enumerable.Range(1, n).Sum();

答案 3 :(得分:0)

调试是任何程序员的重要技能。 Visual Studio中有一些很好的工具可以帮助调试。

在遇到问题时调试代码的好方法是使用“断点”并逐步执行代码。

选择您希望代码停在的行(例如n = int.Parse(txtNum.Text);)并按F9 - 这将在此行添加断点。

现在,当您运行程序时,它将在断点处停止。如果按F11,则可以一次“逐步”执行代码。您可以将鼠标悬停在变量上,以便在执行此操作时查看其值。

如果您这样做,您将很快在代码中找到问题。