我正在制作一个简单的数学程序,但是我无法计算分数
I'm making a simple math program, however i cannot get the score to work
到目前为止,在我的程序中,程序生成并计算了两个数字并保存在AnswerTextBox.Tag中。但是我无法让这个分数在屏幕上工作。验证有效,只是得分计数器无效。我的意思是,我可能一起做错了乐谱。关于我能做什么有什么想法吗?
Private Sub Submit_Answer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit_Answer.Click
Dim score As Integer = 0
ScoreTxt.Text = score
If User_Answer_Field.Text = AnswerTextBox.Tag Then
MsgBox("Well done!")
score = score + 1
Else
MsgBox("Sorry, that is false")
End If
End Sub
每次点击它时,分数都会被创建,设置为零,可能会递增,然后在函数结束时丢失。将您的分数变量保存为 class 的成员变量,这样它就不会丢失。
如果这不是您要讨论的内容,请在 If 语句上设置一个断点并找出保存和比较的值。
您还在比较 .Text(字符串)和 .Tag
确保您比较的是相同的类型变量。
看来这里有两个问题:
- 在计算之前输出
score
值。
- 您不会在任何地方保留
score
值,因此您会在每次回答时重置它。
第一个简单,计算完输出:
score = score + 1
' later...
ScoreTxt.Text = score
第二个取决于一些事情,比如你想在哪里保存这个信息,这是否是一个网络应用程序,等等。最简单的,如果表单的实例总是可用的并且应该保持分数然后你可以简单地使其成为class级会员:
' class level...
Private score As Integer = 0
Private Sub Submit_Answer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit_Answer.Click
' don't re-create the value here
If User_Answer_Field.Text = AnswerTextBox.Tag Then
MsgBox("Well done!")
score = score + 1
Else
MsgBox("Sorry, that is false")
End If
ScoreTxt.Text = score
End Sub
所以该值保持在 class 水平,不会每次都重新创建(因此,重置)。对于更大的范围,您可以将值存储在应用程序外部的某种持久性介质中,例如数据库。
您正在将分数存储在名为 score
的局部变量中。由于它是本地的,因此每次单击按钮时都会重新创建变量(并初始化为零)。此外,由于该变量是本地变量,因此任何其他方法都无法访问它的值。我建议执行以下操作
- 阅读 variable scope
- 将分数存储在 class 的字段中而不是局部变量中
- 不显示 UI 中的值,直到它递增
到目前为止,在我的程序中,程序生成并计算了两个数字并保存在AnswerTextBox.Tag中。但是我无法让这个分数在屏幕上工作。验证有效,只是得分计数器无效。我的意思是,我可能一起做错了乐谱。关于我能做什么有什么想法吗?
Private Sub Submit_Answer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit_Answer.Click
Dim score As Integer = 0
ScoreTxt.Text = score
If User_Answer_Field.Text = AnswerTextBox.Tag Then
MsgBox("Well done!")
score = score + 1
Else
MsgBox("Sorry, that is false")
End If
End Sub
每次点击它时,分数都会被创建,设置为零,可能会递增,然后在函数结束时丢失。将您的分数变量保存为 class 的成员变量,这样它就不会丢失。
如果这不是您要讨论的内容,请在 If 语句上设置一个断点并找出保存和比较的值。
您还在比较 .Text(字符串)和 .Tag
确保您比较的是相同的类型变量。
看来这里有两个问题:
- 在计算之前输出
score
值。 - 您不会在任何地方保留
score
值,因此您会在每次回答时重置它。
第一个简单,计算完输出:
score = score + 1
' later...
ScoreTxt.Text = score
第二个取决于一些事情,比如你想在哪里保存这个信息,这是否是一个网络应用程序,等等。最简单的,如果表单的实例总是可用的并且应该保持分数然后你可以简单地使其成为class级会员:
' class level...
Private score As Integer = 0
Private Sub Submit_Answer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Submit_Answer.Click
' don't re-create the value here
If User_Answer_Field.Text = AnswerTextBox.Tag Then
MsgBox("Well done!")
score = score + 1
Else
MsgBox("Sorry, that is false")
End If
ScoreTxt.Text = score
End Sub
所以该值保持在 class 水平,不会每次都重新创建(因此,重置)。对于更大的范围,您可以将值存储在应用程序外部的某种持久性介质中,例如数据库。
您正在将分数存储在名为 score
的局部变量中。由于它是本地的,因此每次单击按钮时都会重新创建变量(并初始化为零)。此外,由于该变量是本地变量,因此任何其他方法都无法访问它的值。我建议执行以下操作
- 阅读 variable scope
- 将分数存储在 class 的字段中而不是局部变量中
- 不显示 UI 中的值,直到它递增