0

我是编程新手。我想创建一个添加 10 个整数的程序,并显示一个消息框,指示我得到了多少正确答案。我只使用了 1 个标签框和一个按钮。这是我使用的代码。它运行良好,直到消息框显示我只有 1 个正确答案。我究竟做错了什么?谢谢你。

    }
    int a;
    int b; 
    string sagot;

    private void button1_Click(object sender, EventArgs e)
    {
        int i = 1;
        do
        {
            a = i + i;
            label1.Text = i.ToString() + " + " + i.ToString() + "=";
            sagot = Interaction.InputBox("Please type your answer:");
            i++;

        } while (i <= 10);

        {
            if (a == Convert.ToInt32(sagot))
                    {
                    b++;
                    }
                }
                MessageBox.Show("Number of correct answers: " + b.ToString());
            }
        }
        }
4

3 回答 3

8

让我们看看你的代码:

int a; 
int b;  
string sagot; 

private void button1_Click(object sender, EventArgs e) 
{ 
    int i = 1; 
    do 
    { 
        a = i + i; 
        label1.Text = i.ToString() + " + " + i.ToString() + "="; 
        sagot = Interaction.InputBox("Please type your answer:"); 
        i++; 

    } while (i <= 10); 

    { 
        if (a == Convert.ToInt32(sagot)) 
                { 
                b++; 
                } 
            } 
            MessageBox.Show("Number of correct answers: " + b.ToString()); 
        } 
    } 
    } 

所以。

你从 1 开始,a= i*2,你要求他们输入 i+i。你得到他们的回应,并增加 i。

第一个问题在这里..你不是在测试他们的反应!!一旦你再次循环,a 和“sagot”就不再被记住以供以后测试,所以如果你现在不测试......它就消失了。

一旦你这样做,一旦 i=10 它就会出现循环..

所以..

现在你问它,如果 a 与他们给出的答案相同,则 b 加一

好吧,你只做一次..它只适用于最后一个答案..

因此,是的,您将获得 1 分(满分 10 分).....

你有几个到多个大括号。然而..

所以,告诉你你哪里出错了......我不会指出任何问题,比如如果你写“FRED”作为答案......你的应用程序会出错......

这是你的代码改组以获得你的意思 - 但以你的方式 - 不是我的。

int a; 
int b;  
string sagot; 

private void button1_Click(object sender, EventArgs e) 
{ 
    int i = 1; 
    do 
    { 
        a = i + i; 
        label1.Text = i.ToString() + " + " + i.ToString() + "="; 
        sagot = Interaction.InputBox("Please type your answer:"); 
        i++; 
             if (a == Convert.ToInt32(sagot)) 
                { 
                b++; 
                } 
    } while (i <= 10); 

            MessageBox.Show("Number of correct answers: " + b.ToString()); 
于 2012-09-25T14:13:23.170 回答
1

您的问题是您正在执行b++AFTER 循环,因此它只会执行一次。尝试在循环内移动它。

private void button1_Click(object sender, EventArgs e)
{
    int i = 1;
    do
    {
        a = i + i;
        label1.Text = i.ToString() + " + " + i.ToString() + "=";
        sagot = Interaction.InputBox("Please type your answer:");
        i++;
        if (a == Convert.ToInt32(sagot))
        {
            b++;
        }

    } while (i <= 10);

    MessageBox.Show("Number of correct answers: " + b.ToString());
}

另外,作为旁注,您应该稍微清理一下您的代码。特别是您对括号的使用。除非您包含语句,否则您不想使用括号。典型用途是方法体、循环、条件、using语句等。

于 2012-09-25T14:12:16.697 回答
1

您应该在循环期间验证您的答案,如下所示:

private void button1_Click(object sender, EventArgs e)
{
    int i = 1;
    int b = 0;
    do
    {
        a = i + i;
        label1.Text = i.ToString() + " + " + i.ToString() + "=";
        sagot = Interaction.InputBox("Please type your answer:");
        i++;

        if (a == Convert.ToInt32(sagot))
        {
            b++;
        }

    } while (i <= 10);

    MessageBox.Show("Number of correct answers: " + b.ToString());
}
于 2012-09-25T14:12:45.510 回答