我目前正在做一个项目,我正在尝试进行自己的数学测验。基本上,我有3个标签和一个文本框。在第一个和第三个标签中,随机生成一个数字。在第二个标签中,选择数学运算符(+, - 或÷)。在文本框中,用户将输入等式的答案,这让我想到了我想问的问题:
我可以做到这一点很好但我无法理解代码,检查输入到文本框中的答案是否正确。
我试过......
If lbloperator.Text = "+" & txtsum.Text =num1 + num2 Then
msgbox("CORRECT")
End If
但它不起作用。
最后,我想用计数器替换msgbox,以计算在测验期间获得的正确答案的数量。我也尝试了其他的东西并且一直在收到错误:
从字符串“”到“Double”类型的转换无效。
如果有帮助,可以使用一个按钮来随机化操作员和标签中的数字,并检查答案是否正确。
谢谢
答案 0 :(得分:2)
也许这会有所帮助。
鉴于这些功能:
Dim dictionary = New Dictionary(Of String, Func(Of Double, Double, Double))() _
From _
{ _
{"+", Function(x, y) x + y}, _
{"-", Function(x, y) x - y}, _
{"*", Function(x, y) x * y}, _
{"/", Function(x, y) x / y} _
}
Dim process As Func(Of String, String, String, Double) = _
Function(op, x, y) _
dictionary(op)(Double.Parse(x), Double.Parse(y))
您现在可以:
Dim operator = TextBox1.Text ' "+"
Dim num1 = TextBox2.Text ' "5"
Dim num2 = TextBox3.Text ' "4"
Dim result = process(operator, num1, num2) ' 9
请告诉我这是否有帮助,以及如何扩展它以帮助您到达目的地。
答案 1 :(得分:0)
我建议您使用select语句,例如尝试这样的事情;假设下面有四个文本框,第一个是第一个,第二个是运算符,第三个是第二个数字,最后是结果。转换为十进制以允许人们输入类似2,5的情况,其他情况允许他们可能无法进入正确的操作员。
daUsersRoles.TableMappings.Add("Table", "UserLogins");
daUsersRoles.TableMappings.Add("Table1", "Users");
daUsersRoles.TableMappings.Add("Table2", "Roles");