[英]Looping 10 times adding input, with for and do while loop in C#?
我是一名基础C#课程的新手,我在完成工作任务时遇到了麻烦。 我建了一个基本的计算器,它工作正常。 现在我必须添加一个名为“Sum”的新按钮,它将从我的一个盒子(number1Txtbox)中获取输入,并通过循环将其添加到自身10次。
我倒了我的c#书的页面,无法想出这个。 我想出了如何使用计数器等初始化循环,我只是无法让它在我的生活中工作。
有人告诉我使用for循环,然后切换到do while循环。 这对我来说真的没有意义,我以为我可以用for循环做到这一点。 所以我的问题是:
1)我甚至需要切换到do while循环来执行此操作吗?
2)我做错了什么?
这是我到目前为止所做的,当我在文本框中输入一个数字后尝试点击总和按钮时,它只会使我的程序冻结:
private void sumBtn_Click(object sender, EventArgs e)
{
int counter;
int loopAnswer;
int number1;
number1 = int.Parse(number1Txtbox.Text);
for (counter = 1; counter <= 10; counter++)
{
loopAnswer = number1 + number1;
do
{
loopAnswer = loopAnswer + number1;
} while (counter <= 10);
equalsBox.Text = loopAnswer.ToString();
}
}
多谢你们!
你混合的东西。 你要么这样做:
private void sumBtn_Click(object sender, EventArgs e)
{
int counter;
int loopAnswer = 0;
int number1 = int.Parse(number1Txtbox.Text);
for (counter = 1; counter <= 10; counter++)
{
loopAnswer += number1; //same as loopAnswer = loopAnswer + number1;
}
equalsBox.Text = loopAnswer.ToString();
}
或这个:
private void sumBtn_Click(object sender, EventArgs e)
{
int counter = 1;
int loopAnswer = 0;
int number1 = int.Parse(number1Txtbox.Text);
do
{
loopAnswer += number1; //same as loopAnswer = loopAnswer + number1;
counter++;
} while (counter <= 10);
equalsBox.Text = loopAnswer.ToString();
}
此外,最终答案( equalsBox.Text = loopAnswer.ToString();
)应该不在循环中。
它会冻结,因为当它进入do while
循环时, counter
永远不会改变。 如果它永远不会改变,则counter <= 10
始终为真,因此您将获得无限循环。 它被困在那里。
private void sumBtn_Click(object sender, EventArgs e)
{
//these should default to 0, but we should to it explicitly, just in case.
int loopAnswer = 0;
int number1;
if(int.TryParse(number1Txtbox.Text, out number1)
{
for (counter = 1; counter <= 10; counter++)
{
loopAnswer += number1;
}
equalsBox.Text = loopAnswer.ToString();
}
else
equalsBox.Text = "Not A Number";
}
这里的TryParse
只是一个好习惯。 它会处理您需要输入文本的情况。 也可以使用try catch
块。
private void sumBtn_Click(object sender, EventArgs e)
{
int counter;
int loopAnswer = 0;
int number1;
number1 = int.Parse(number1Txtbox.Text);
for (counter = 1; counter <= 10; counter++)
{
loopAnswer += number1;
}
equalsBox.Text = loopAnswer.ToString();
}
你的程序会冻结,因为
do
{
loopAnswer = loopAnswer + number1;
} while (counter <= 10);
根本不更新计数器变量。 因此,计数器永远不会达到10,所以这个循环永远不会退出。
在一个while循环中求和这样做
counter = 1;
do {
loopAnswer += number1;
counter++;
} while(counter <= 10);
你的内循环(while)无休止地运行,因为计数器永远不会增加,这就是你的程序挂起的原因。 在一行上设置断点,以便能够调试程序并更好地理解循环的工作方式。
要解决此分配,您只需要一个循环,绝对不是嵌套循环。 你使用什么样的循环机制并不重要。
此代码导致无限循环(这是冻结的原因):
for (counter = 1; counter <= 10; counter++)
{
loopAnswer = number1 + number1;
do
{
loopAnswer = loopAnswer + number1;
} while (counter <= 10);
equalsBox.Text = loopAnswer.ToString();
}
事实上,你在这里循环从1到10,并且每次迭代你执行loopAnswer = loopAnswer + number1;
直到条件counter <= 10
变为假。 但这种情况从未发生,因为在你做的时候,计数器变量不会改变,所以程序在第一次迭代中永远存在。
我认为你应该摆脱内在的do-while并把equalsBox.Text = loopAnswer.ToString();
在for循环之外。
为了举例,我们假设number1 = 4.当你执行line loopAnswer = number1 + number1;
loopAnswer
的结果值将始终为8.如果您希望loopAnswer
递增,那么您应该使用loopAnswer = loopAnswer + number1;
,或简写语法loopAnswer += number1;
关于for
循环与do-while
,我猜测这不是同时使用两个循环的问题,而是使用for
循环来说明概念然后切换到使用do-while
循环来说明这个概念。
您可以使用这样的for循环完成此练习:
for (counter = 1; counter <= 10; counter++)
{
loopAnswer += number1;
}
equalsBox.Text = loopAnswer.ToString();
您还可以使用do-while循环完成相同的功能,如下所示:
int counter = 1;
do
{
loopAnswer += number1;
counter++;
} while (counter <= 10);
equalsBox.Text = loopAnswer.ToString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.