使用For循环填充二维数组

时间:2011-07-29 16:18:37

标签: vb.net

目前我正在尝试使用随机x和o填充3x3平方来制作一个tic tac toe 游戏。不幸的是,游戏似乎没有输出所有的x和o。从逻辑上讲,从我所看到的,它应该能够但事实并非如此。任何帮助将不胜感激。

Shared Sub twodimension()
    Dim tic(2, 2) As String
    Dim min As Integer
    Dim x As String
    Dim random As New Random()
    Dim i As Integer
    Dim x1 As Integer

    Dim bound0 As Integer = tic.GetUpperBound(0)
    Dim bound1 As Integer = tic.GetLowerBound(1)

    For i = 0 To bound0
        For x1 = 0 To bound1
            min = random.Next(2)

            If min = 0 Then
                x = "x"
                Console.WriteLine("{0}", x)
            Else
                x = "o"
                Console.WriteLine("{0}", x)
            End If
            Console.Write(" "c)
        Next
        Console.WriteLine()
    Next
End Sub

1 个答案:

答案 0 :(得分:3)

所以大概你在某个地方得到了这个声明,对吧?

Public Shared Tic(2, 2) As String

在你的代码中,你有GetLowerBound,它(几乎)总是返回零,而你应该GetUpperBound()

    Dim bound0 As Integer = tic.GetUpperBound(0)
    Dim bound1 As Integer = Tic.GetUpperBound(1)

编辑(回应评论)

GetUpperBound(int)会返回您可以用于指定维度的最高编号。

所以对于以下数组:

    Dim MyArray(4, 6, 8) As Integer

    Trace.WriteLine(MyArray.GetUpperBound(0)) ''//Returns 4
    Trace.WriteLine(MyArray.GetUpperBound(1)) ''//Returns 6
    Trace.WriteLine(MyArray.GetUpperBound(2)) ''//Returns 8

GetLowerBound(int)返回您可以用于指定维度的最小数字。在几乎每种情况下,这都是零,但在旧版本的VB中(并使用一些COM互操作),您可以创建不在零处“启动”的数组,而是从您想要的任何内容开始。因此,在旧的VB中,您实际上可以说Dim Bob(1 To 4) As IntegerGetLowerBound(0)将返回1而不是0。在大多数情况下,甚至没有理由意识到GetLowerBound甚至存在。