我正在尝试编写角色扮演骰子子程序。我在Visual Basic中使用Visual Studio 2010编写。根据Visual Studio的所有语法都是正确的。表格如下:
当您点击骰子#文本框的值为“1”或“null”的数字按钮时,它将滚动一个骰子,并根据您单击的数字按钮为您提供一个随机值。如果您将值设置为2或更大,则程序将停止并向我提供以下异常错误。
我已完成研究并认为代码编写正确,但由于某种原因,值不会进入数组。想知道如何使值进入数组并使程序认识到正在滚动多个骰子。下面是其中一个按钮的代码副本。
Private Sub btnD4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnD4.Click
Dim v, w, x, y, z, iarry(x) As Integer
lvRolls.Items.Clear()
If txt4Qty.Text = vbNullString Then
x = 1
Else
x = CInt(txt4Qty.Text)
End If
If x = 1 Then
z = CInt(Int(Rnd() * 5))
If z > 4 Then
z = 4
ElseIf z < 1 Then
z = 1
End If
lvRolls.Items.Add("Roll 1")
lvRolls.Items(0).SubItems.Add(CStr(z))
If txt4Mod.Text = vbNullString Then
lblTotal.Text = CStr(z)
Else
w = CInt(txt4Mod.Text)
lblTotal.Text = CStr(z + w)
End If
Else
For y = 0 To x Step 1
z = CInt(Int(Rnd() * 5))
If z > 4 Then
z = 4
ElseIf z < 1 Then
z = 1
End If
iarry(y) = z
Next
For v = 0 To x
lvRolls.Items.Add("Roll " & v + 1)
lvRolls.Items(x).SubItems.Add(CStr(iarry(y)))
Next
End If
End Sub
答案 0 :(得分:3)
您在这里宣布您的数组iarry
: -
Dim v, w, x, y, z, iarry(x) As Integer
这将导致声明数组没有元素。只要知道x的值,就需要
ReDim iarry(x)
修改仔细阅读您的代码,似乎您可能需要
ReDim iarry(x + 1)
标注x
元素数组可为您提供元素0, 1, 2, ..., x-1
。
答案 1 :(得分:1)
我建议你更改数组并使用list(整数),它更容易使用,你不需要初始化列表中的项目数。
修改强>
以下是您的代码版本,我不知道这是否是您想要的。
Private Sub btnD4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnD4.Click
Dim x As Integer = CInt(If(txt4Qty.Text <> vbNullString, txt4Qty.Text, 1))
Dim iarry As New List(Of Integer)
lvRolls.Items.Clear()
If x = 1 Then
Dim z As Integer
z = (New Random).Next(1, 4)
lvRolls.Items.Add("Roll 1")
lvRolls.Items(0).SubItems.Add(z.ToString)
If txt4Mod.Text = vbNullString Then
lblTotal.Text = z.ToString
Else
lblTotal.Text = (z + CInt(txt4Mod.Text)).ToString
End If
Else
Dim i As Integer
For i = 0 To x
iarry.Add((New Random).Next(1, 4))
Next
For v = 0 To x
Dim t_item As New ListViewItem("Roll " & v + 1)
lvRolls.Items.Add(t_item)
t_item.SubItems.Add(CStr(iarry(v)))
Next
End If
End Sub