簡體   English   中英

循環10次添加輸入,在C#中使用for和do while循環?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM