使用radiobuttons计数多项选择测验

时间:2017-11-22 19:00:54

标签: vb.net radio-button counter

我的分数计数器有问题不计算,当msgbox弹出时,它没有显示收到的分数,只是" 0"。我已经查看了各种其他问题,告诉我们如何使用程序计数器的答案,但他们的解决方案似乎对我不起作用。

Dim grade1, percentage1 As String
Dim score1 As Integer

^^ declorations

 score1 = "0"
    If RadioButton1.Checked = True Then
        score1 = score1 + 1
    ElseIf RadioButton2.Checked = True Then
        score1 = score1 + 0
    End If
    If RadioButton4.Checked = True Then
        score1 = score1 + 1
    ElseIf RadioButton3.Checked = True Then
        score1 = score1 + 0
    End If
    If RadioButton5.Checked = True Then
        score1 = score1 + 1
    ElseIf RadioButton6.Checked = True Then
        score1 = score1 + 0
    End If
    If RadioButton8.Checked = True Then
        score1 = score1 + 1
    ElseIf RadioButton7.Checked = True Then
        score1 = score1 + 0
    End If
    If RadioButton9.Checked = True Then
        score1 = score1 + 1
    ElseIf RadioButton10.Checked = True Then
        score1 = score1 + 0
    End If
    Select Case score1
        Case 1
            score1 = 0
            grade1 = "U" & percentage1 = "0%"
        Case 2
            score1 = 1
            grade1 = "D" & percentage1 = "20%"
        Case 3
            score1 = 2
            grade1 = "C" & percentage1 = "40%"
        Case 4
            score1 = 3
            grade1 = "B" & percentage1 = "60%"
        Case 5
            score1 = 4
            grade1 = "A" & percentage1 = "80%"
        Case 6
            score1 = 5
            grade1 = "A*" & percentage1 = "100%"

    End Select

End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    MsgBox("Your score is" + score1.ToString, MsgBoxStyle.Information)
    MsgBox("Your grade is" + grade1, MsgBoxStyle.Information)
    MsgBox("Your percentage is" + percentage1, MsgBoxStyle.Information)
End Sub

1 个答案:

答案 0 :(得分:1)

(我希望这个问题仍然有效?) 我想根据你的问题,你仍然是编程的初学者。 鲍勃提供了一些有用的提示,现在我尝试回答你的问题。 有几件事,你需要改变和其他一些改进。

首先:

score1 = "0"应为score1 = 0。 您将score1声明为整数,但使用引号尝试将其值设置为字符串。像Plutonix提到的那样。

第二名:

你想做一个小的多项选择测验游戏并使用单选按钮。据我所知,单选按钮的创建只能强制选择一个。 如果您检查一个单选按钮,则所有其他单选按钮将取消选中。 您应该选择的控件是复选框。 提示:请注意,用户可以选中两个复选框。如果选中一个,则应禁用另一个,直到取消选中第一个框。

第三:

你问,你应该写什么,而不是score1 = score1+0。 答案:没什么。如果您在这种情况下没有编写代码,则不会发生任何事情,分数也不会改变。

E.g。 - >

If CheckBox9.Checked = True Then
            score1 = score1 + 1
        ElseIf RadioButton10.Checked = True Then
        End If

但是你可以更多地改进这个代码。 CheckBox.Checked是一个函数,它返回一个布尔值(true / false)。您可以缩短if条件的代码,如下所示:

If CheckBox9.Checked Then
        score1 +=1

第四:

grade1 = "U" & percentage1 = "0%"

如果要将两个变量设置为两个不同的值,请将其分为两行。

grade1 = "U"
percentage1 = "0%"

除此之外,您在选择案例中不需要score1 = ...。 选择案例正在查找给定变量score1的值并选择案例,其中score1等于案例表达式。 例如,如果用户选中了具有正确答案的所有框,则选择案例将在案例5中执行代码,因为score1 = 5.

选择案例信息:

https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/select-case-statement

最后但并非最不重要:

您应该将复选框的逻辑写入子:

Private Sub CalculateScore()

    If CheckBox1.Checked  Then
        score1 = score1 + 1

'Here comes the code for the other checkboxes and the select case...
End Sub

在调用MsgBoxes之前,应在Button1_Click事件中调用此子。像鲍勃提到的那样。

我希望通过这篇文章回答大部分问题。 如果我不准确或你不明白的话可以随意问。

最好的问候

SgtMeowBlank