如何在vbnet上随机化测验

时间:2018-09-12 22:11:11

标签: vb.net

我是Visual Basic编程的新手,一切都很好,直到我们的主题转向数组。我试图用Java理解它的代码。 (例如:方法称为函数。。。)

我的教授为我们提供了一个练习,以创建一个测验程序,向用户询问5个以上的问题(在文本框中),并提供选择(在按钮中),最后计算分数(全部以一种形式)。如果用户单击一个按钮,它将告诉您是对还是错,然后继续更改问题以及选择。

*必填:-用户完成测验后,将显示分数,并且应该有一个重新启动按钮,并且所有问题将再次随机无规律地询问。 -尝试制作功能。

从昨天开始我尝试搜索网络,但是我的代码仍然没有任何进展。

Public Class Form1
    Dim questions(5) As String
    Dim answers(5) As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Method/Function for loading the Q&A
        loadQsAndAs()
    End Sub
    Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        Me.Close()
    End Sub

    Private Sub loadQsAndAs()
        'Questions
        questions(0) = "What is 1 + 1?"
        questions(1) = "Who is the first man to walk on the Moon?"
        questions(2) = "What is the name of the main character in the movie: Yes Man! (2007)"
        questions(3) = "If I gave you three apples and you ate two, how many is left?"
        questions(4) = "What do you want in your final grade?"
        questions(5) = "What is the name of the thing(s) that you use whenever you eat?"
        'Answers
        answers(0) = "2"
        answers(1) = "Neil Armstrong"
        answers(2) = "Jim Carrey"
        answers(3) = "1"
        answers(4) = "A 4.0"
        answers(5) = "A Spoon and Fork"

        TextBox1.Text = setTheQuestion()
        Button1.Text = setTheAnswer1()
        Button2.Text = setTheAnswer2()
        Button3.Text = setTheAnswer3()
        Button4.Text = setTheAnswer4()

    End Sub

    Private Function setTheQuestion() As String
        Dim randomValue As New Random
        Dim randomQ As String = ""
        Dim i As Integer
        Dim index As Integer

        For i = 0 To 0
            index = randomValue.Next(0, questions.Length)
            randomQ &= questions(index)
        Next
        Return randomQ
    End Function

    Private Function setTheAnswer1() As String
        Dim randomValue As New Random
        Dim randomAns As String = ""
        Dim i As Integer
        Dim index As Integer

        For i = 0 To 0
            index = randomValue.Next(0, answers.Length)
            randomAns &= answers(index)
        Next

        Return randomAns
    End Function

    Private Function setTheAnswer2() As String
        Dim randomValue As New Random
        Dim randomAns As String = ""
        Dim i As Integer
        Dim index As Integer

        For i = 0 To 0
            index = randomValue.Next(1, answers.Length)
            randomAns &= answers(index)
        Next

        Return randomAns
    End Function

    Private Function setTheAnswer3() As String
        Dim randomValue As New Random
        Dim randomAns As String = ""
        Dim i As Integer
        Dim index As Integer
        For i = 0 To 0
            index = randomValue.Next(2, answers.Length)
            randomAns &= answers(index)
        Next

        Return randomAns
    End Function

    Private Function setTheAnswer4() As String
        Dim randomValue As New Random
        Dim randomAns As String = ""
        Dim i As Integer
        Dim index As Integer

        For i = 0 To 0
            index = randomValue.Next(3, answers.Length)
            randomAns &= answers(index)
        Next

        Return randomAns
    End Function

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As  System.EventArgs) Handles Button6.Click
        loadQsAndAs()
    End Sub
End Class

3 个答案:

答案 0 :(得分:0)

process.nextTick()

该代码涵盖了大多数必要的注释,其中包括该想法及其工作方式。 Random()和arraylist是该程序起作用的关键,只是要多加注意。祝你好运。

答案 1 :(得分:0)

如何尝试?

Public Class Form1

    Dim questions(5) As String
    Dim answers(5) As String

    Private Sub loadQsAndAs()
        'Questions
        questions(0) = "What is 1 + 1?"
        questions(1) = "Who is the first man to walk on the Moon?"
        questions(2) = "What is the name of the main character in the movie: Yes Man! (2007)"
        questions(3) = "If I gave you three apples and you ate two, how many is left?"
        questions(4) = "What do you want in your final grade?"
        questions(5) = "What is the name of the thing(s) that you use whenever you eat?"
        'Answers
        answers(0) = "2"
        answers(1) = "Neil Armstrong"
        answers(2) = "Jim Carrey"
        answers(3) = "1"
        answers(4) = "A 4.0"
        answers(5) = "A Spoon and Fork"

        Dim random As New Random
        Dim indices = { 0, 1, 2, 3, 4, 5 }.OrderBy(Function (n) random.Next()).ToArray()
        Dim question = random.Next(questions.Length - 1)

        TextBox1.Text = questions(indices(question))

        Button1.Text = answers(indices(0))
        Button2.Text = answers(indices(1))
        Button3.Text = answers(indices(2))
        Button4.Text = answers(indices(3))

    End Sub

End Class

就是这样。漂亮又简单。关键技巧是创建一个随机化indices数组以对questionsanswers数组进行查找。

答案 2 :(得分:0)

Private Dim rnd As Integer

Private Function setTheQuestion() As String
    rnd = (CInt(Math.Ceiling(Rnd() * questions.Length)) + 1)
    Return questions(rnd)
End Function

Private Function setTheAnswer1() As String
    Return answers(rnd)
End Function