我不知道为什么“ Doub”没有更新

时间:2019-10-10 02:17:43

标签: vb.net

我正在开发一个程序,每次骰子都会计数 翻倍,但我要添加到列表框中的变量没有更新,我也不知道为什么...

代码如下:

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        'declare vars
        Dim teal, red, doub As Integer
        Dim rand As New Random
        teal = rand.Next(6)
        red = rand.Next(6)
#Region "Clear"
Irrelevant stuff
#End Region
        'green dice
            irrelevant if statement
        'red dice
            irrelevant if statement
        'doubles
        **If red = teal Then
            doub = doub + 1
            output.Items.Clear()
            output.Items.Add("Doubles: " & doub)
        End If**
    End Sub
End Class

在关于骰子部分的if语句中 没有影响“ doub”变量的因素 所以这就是为什么我把“无关的if语句” 还因为stackoverflow表示帖子主要是代码

1 个答案:

答案 0 :(得分:0)

您的doub变量在按钮单击处理程序中声明,因此其作用域仅在该过程内。这意味着它会在每次点击后释放。您需要将其放置在按钮单击处理程序之外:

Dim doub As Integer

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    ' Declare variables
    Dim teal As Integer
    Dim red As Integer
    Dim rand As New Random

    teal = rand.Next(6)
    red = rand.Next(6)

    Debug.Print(teal & "-" & red)

    ' Doubles
    If red = teal Then
        doub += 1
        Debug.Print("Doubles: " & doub)
    End If

End Sub

您可以在以下链接中了解变量范围:How to: Control the Scope of a Variable

输出(第一次尝试加倍!):

4-4
Doubles: 1
1-5
0-5
5-0
2-2
Doubles: 2
3-0

此快速测试显示了您的代码中的另一个问题:您可以滚动 0 ,1、2、3、4、5和6。您应该使用rand.Next(1,6),假设您尝试模拟掷骰子。