Visual Basic 出错,我不知道为什么

Error in Visual Basic and I have no idea why

首先我是法国人所以如果我犯了一些错误请原谅

我从 Visual Basic 开始,我已经 class 2 个月了,我在大学有我的第一个 "big" 项目

我的模块如下:

Public Function CanPlay(ByVal i As Integer) As Boolean

Dim possible As Boolean
Dim t() As Integer

For i = 1 to 6
If t(i) = 0 Then
possible = False
Else possible = True

Next i
Return possible

End Function

我正在创建一个名为 Kalaha 的游戏,需要说明玩家是否可以玩,如果 t(i) 在所有情况下都等于 0,则玩家无法玩 但是我的第一个“t(i) = 0”不起作用,他用绿色下划线并说没有为 t 分配值,但我只是在开始时声明它...

试图声明 "t" 的数组是不正确的,并且没有尝试用值初始化它。

下一行可用于声明和初始化数组。

Dim t As Integer() = New Integer() {0, 0, 1, 2, 3, 4, 5 }

另请注意,VB.NET 使用从零开始的数组,因此您的第一个数组值为 t(0)。

不需要将i作为参数传递给CanPlay函数。我可以在循环中声明。您更有可能将 t 数组作为参数传递,而不是在本地声明它。

正如 JohnH 所指出的,VB.NET 数组从元素零开始。您可以迭代到 t.GetUpperBound(0) 以捕获每个元素,直到数组的最高元素。如果你遍历最高元素,你会得到一个 "out of bounds" 异常。

您不需要 "possible" 布尔变量。正如 mcNets 指出的那样,每次调用 CanPlay 时都会 return t(6) ,这使得循环毫无意义。一旦在数组中找到非零值,只需 return True。如果您在没有 return 为 True 的情况下退出循环,则意味着未找到零值,因此 return 值为 False。

Public Function CanPlay(ByVal t As Integer()) As Boolean
    For i As Integer = 0 to t.GetUpperBound(0)
        If t(i) <> 0 Then Return True
    Next

    Return False
End Function

您可以按如下方式调用 CanPlay 函数:

Dim bCanPlay As Boolean = CanPlay(New Integer() {0, 0, 1, 2, 3, 4, 5 })