Я пытаюсь написать подпрограмму Role-Playing Dice. Я использую Visual Studio 2010, пишу на Visual Basic. Весь синтаксис согласно Visual Studio правильный. Форма выглядит следующим образом:
Когда вы нажимаете числовые кнопки со значением «1» или «ноль» для текстовых полей «Количество кубиков», он бросает один кубик и дает вам одно случайное значение в зависимости от того, какую числовую кнопку вы нажимаете. Если вы поставите значение 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
iarray
.Dim v, w, x, y, z, iarry(x) As Integer
x может быть равно нулю, поэтому длина вашего массива также должна быть равна нулю. Поскольку единственная часть, к которой вы обращаетесь к этому массиву, - это когдаx != 1
это должно быть. - person pdresselhaus   schedule 11.08.2012