随机值的逻辑错误

本文关键字:错误 随机 | 更新日期: 2023-09-27 18:22:39

我创建了一个获胜表单,该表单能够生成一个带有3个标签的数字(label1label2label4)和一个将被存储的textbox,然后在按下按钮时验证其值。我的问题是,当我正确回答label4时,它并没有提高自己的值。使用此代码

int num = 0;
string temp;
        if (textBox1.Text == ans.ToString())
        {
            num++;
            temp = "Correct Answers " + num;

            int a = rr.Next(4), b = rr.Next(4);
            ans = a + b;
            label1.Text = a.ToString();
            label2.Text = b.ToString();          
            label4.Text = temp;
            textBox1.Focus();
            textBox1.SelectAll();
        }

随机值的逻辑错误

label4从不增加自己的值,还是从不增加超过第一次的值?因为这两种选择中的后一种正是你正在做的。看看你的逻辑步骤:

int num = 0;
string temp;
//...
num++;
temp = "Correct Answers " + num;
//...
label4.Text = temp;

无论你答对多少次,label4都只能显示:

"Correct Answers 1"

因为总是num初始化为0,将其递增为1并显示。您在哪里跟踪总共给出了多少答案?

您需要一些更高范围的整数值来跟踪它。放置位置取决于对象的寿命。例如,如果该逻辑所在的对象在多个答案中持续存在(也就是说,如果同一个实例始终在内存中,并且没有被销毁和重新创建),那么您可以添加一个类级成员来保存该值。类似这样的东西:

private int TotalCorrectAnswers { get; set; }

然后您的代码将使用该值,而不是每次实例化一个新值:

string temp;
//...
TotalCorrectAnswers++;
temp = "Correct Answers " + TotalCorrectAnswers;
//...
label4.Text = temp;

其他选项可能包括将值存储在静态字段中以在对象生命周期中保持,将数据库存储在应用程序生命周期中,等等。这取决于应用程序的结构。

因此,当您提供数学问题的答案时,表示正确答案的Label4计数最高为1?你不是偶然在点击事件处理程序中定义了变量num吧?在这种情况下,每次你得到正确的答案时,它都会将num从零增加到一,不正确的答案不会显示任何变化,但接下来你的下一个正确答案会再次从0增加到一。