[英]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.