VB - 数学测验检查答案

时间:2015-07-10 08:10:08

标签: vb.net

我目前正在做一个项目,我正在尝试进行自己的数学测验。基本上,我有3个标签和一个文本框。在第一个和第三个标签中,随机生成一个数字。在第二个标签中,选择数学运算符(+, - 或÷)。在文本框中,用户将输入等式的答案,这让我想到了我想问的问题:

我可以做到这一点很好但我无法理解代码,检查输入到文本框中的答案是否正确。

我试过......

 If lbloperator.Text = "+" & txtsum.Text =num1 +  num2 Then
        msgbox("CORRECT")
    End If

但它不起作用。

最后,我想用计数器替换msgbox,以计算在测验期间获得的正确答案的数量。我也尝试了其他的东西并且一直在收到错误:

  

从字符串“”到“Double”类型的转换无效。

如果有帮助,可以使用一个按钮来随机化操作员和标签中的数字,并检查答案是否正确。

谢谢

2 个答案:

答案 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");