0

私はプログラミングに不慣れです。10個の整数を追加し、正解の数を示すメッセージボックスを表示するプログラムを作成したいと思います。ラベルボックス1つとボタン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を増やします。

最初の問題はここにあります..あなたは彼らの応答をテストしていません!! ループをもう一度回ると、「sagot」は後でテストするために記憶されなくなります。したがって、今テストしない場合は、それはなくなります。

これを行うと、i = 10になると、ループが発生します。

それで..

今、あなたはそれを尋ねます、aが彼らが与えた答えと同じであるならば、bに1を加えてください

さて、あなたは一度だけそれをします..そしてそれは最後の答えにのみ適用されます..

したがって、はい、10点満点中1点を獲得します。

中括弧は数個から数個あります。でも..

だから、どこが間違っていたのかを教えてくれたので、答えとして「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++、ループの後で実行しているため、実行されるのは1回だけであるということです。ループ内に移動してみてください。

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 に答える