我正在用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();
}
为什么不使用高斯公式。 (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();
}
你的编辑:你应该减少计数..另一个编辑,似乎我需要解释更多:通过减少我的意思是--
。 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
如果你将++
更改为--
,它应该按照你的意愿工作。
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.Range和Enumerable.Sum而不是while循环(可能超出了预期的功课,但知道那里有什么是有用的)。
answer = Enumerable.Range(1, n).Sum();
调试是任何程序员的重要技能。 Visual Studio中有一些很好的工具可以帮助调试。
遇到困难时调试代码的好方法是使用“断点”并逐步执行代码。
选择您希望代码停在的行(例如n = int.Parse(txtNum.Text);
)并按F9 - 这将在此行添加断点。
现在,当您运行程序时,它将在断点处停止。如果按F11,则可以一次“逐步”执行代码。您可以将鼠标悬停在变量上,以便在执行此操作时查看其值。
如果这样做,您将很快在代码中发现问题。