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

问题描述 投票:3回答:4

我正在用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();
       }
c# while-loop
4个回答
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();
}

3
投票

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

如果count继续增加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

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();

0
投票

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.