0

私の問題は、ここでの私のプログラムでは、if ステートメントがどの順序で書かれているかに応じて、button21 の関数間を行き来するのに問題があることです。次のコードでは、動作する button2 に設定していますが、ボタン 1 と 2 の両方が選択されている場合は、button21 で動作するようにします。ただし、関数設定 qw==1 は、qw==2 ではなく、このプログラムで機能するものなので、プログラム コードの問題は何ですか? コードが表示されます。

namespace Matematisk_indlæring
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Random RND = new Random(Guid.NewGuid().GetHashCode());
        Random RND2 = new Random(Guid.NewGuid().GetHashCode());
        private void quitToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Hide(); 
            button2.Hide();
            button3.Hide();
            button4.Hide();
            button5.Hide();
            label1.Show();
            textBox1.Show();
            button21.Show();
            double qw = 1;
            textBox2.Text = qw.ToString();
            string q = "1+1";
            label1.Text = q;
            int qq = 1 + 1;
            textBox3.Text = qq.ToString();
        }


        private void button21_Click(object sender, EventArgs e)
        {
            double qqq = Convert.ToDouble(textBox1.Text);
            double qq = Convert.ToDouble(textBox3.Text);
            int qw = Convert.ToInt32(textBox2.Text);
            if (qw == 1)
            {
                if (qq == qqq)
                {

                    MessageBox.Show("succes");
                    int qws1;

                    int qws;

                    qws1 = RND2.Next(51, 100);


                    qws = RND.Next(0, 50);

                    qq = qws1 + qws;
                    textBox3.Text = qq.ToString();
                    string tese = qws.ToString();
                    string tese2 = qws1.ToString();
                    label1.Text = tese2 + "+" + tese;

                }

                    if (qw == 2)
                    {
                        if (qq == qqq)
                        {

                            MessageBox.Show("succes");
                            int qws1;

                            int qws;

                            qws1 = RND2.Next(51, 100);


                            qws = RND.Next(0, 50);

                            qq = qws1 - qws;
                            textBox3.Text = qq.ToString();
                            string tese = qws.ToString();
                            string tese2 = qws1.ToString();
                            label1.Text = tese2 + "-" + tese;

                        }




                }
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            button1.Hide();
            button2.Hide();
            button3.Hide();
            button4.Hide();
            button5.Hide();
            label1.Show();
            textBox1.Show();
            button21.Show();
            double qw = 2;
            textBox2.Text = qw.ToString();
              string q = "1-1";
                label1.Text = q;
                int qq = 1 - 1;
                textBox3.Text = qq.ToString();
        }
    }
}
4

1 に答える 1

1

ここには少なくとも1つの論理的な欠陥があります。

In button21_Click:最初にqwが1であるかどうかをテストし、次にそれが2であるかどうかをテストします。ただし、コードは変更されませんqw。では、どうすれば突然1から2になることができるのでしょうか。

このメソッドのコードは基本的に次のとおりです。

int qw = Convert.ToInt32(textBox2.Text);

if (qw == 1)
{
    if (qq == qqq)
    {
        // code which does not modify qw
    }

    if (qw == 2)          // wrong placement of this if-statement!
    {
        // code which can never be called!
    }
}

ご覧のとおり、ifsが間違ってネストされているため、このメソッドでコントロールに到達することはできませんif (qw == 2)。インデントを修正すると、これをより簡単に確認できます。

また:Du burde bruke engelsk klassenavn、ikke dansk :-)

于 2013-03-07T07:39:19.400 に答える