Visual Basic中的错误,我不明白为什么

时间:2016-11-07 21:02:46

标签: vb.net visual-studio-2010

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

我从Visual Basic开始,我从2个月开始上课,我在大学开设了第一个“大”项目

我的模块如下:

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分配值但是我刚开始宣布它...

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

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

正如JohnH指出的那样,VB.NET数组从元素零开始。您可以迭代到t.GetUpperBound(0)以捕获每个元素,直到数组的最高元素。如果你超越最高元素,你将获得“越界”例外。

您不需要“可能的”布尔变量。正如mcNets指出的那样,每次调用CanPlay时都会返回t(6),这会使循环变得毫无意义。只要在数组中找到非零值,只需返回True即可。如果退出循环而不返回True,则表示未找到零值,因此返回值为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 })
相关问题