目前我正在尝试使用随机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
答案 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 Integer
而GetLowerBound(0)
将返回1
而不是0
。在大多数情况下,甚至没有理由意识到GetLowerBound
甚至存在。