Arrays Visual Basic-将信息从数组存储到二维数组
我有一些代码,其中一个“映射”存储在一个字符串中,然后我将其放入一个数组中。此数组已将字符串分隔为每个索引位置的字符。我现在想将这些字符放入二维数组,如下所示是我的尝试:Arrays Visual Basic-将信息从数组存储到二维数组,arrays,visual-studio-2008,loops,multidimensional-array,Arrays,Visual Studio 2008,Loops,Multidimensional Array,我有一些代码,其中一个“映射”存储在一个字符串中,然后我将其放入一个数组中。此数组已将字符串分隔为每个索引位置的字符。我现在想将这些字符放入二维数组,如下所示是我的尝试: Sub DisplayMap() Dim MapTog As String MapTog = ("--------------------------------------------------------------------------------") _ & ("-
Sub DisplayMap()
Dim MapTog As String
MapTog = ("--------------------------------------------------------------------------------") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- --------------------- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("------------------- ---------------------") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- --------------------- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("- -") _
& ("--------------------------------------------------------------------------------")
Dim MapSep() As Char = MapTog.ToCharArray
For Count = 0 To 24
For Count2 = 0 To 79
Map(Count)(Count2) = MapSep(Count2)
Console.Write(MapSep(Count2))
Next Count2
Next Count
Console.SetCursorPosition(0, 0)
End Sub
我想我的For循环有一个问题,但我无法解决。非常感谢您的帮助,谢谢!:) 这里有一种方法:
Module Module1
Public Map As New List(Of List(Of Char))
Public Sub Main()
CreateMap()
DisplayMap()
Console.ReadLine()
End Sub
Public Sub DisplayMap()
Console.Clear()
' this demonstrates how you can access each char separately:
For y As Integer = 0 To Map.Count - 1
For x As Integer = 0 To Map(y).Count - 1
Console.SetCursorPosition(x, y)
Console.Write(Map(y)(x))
Next
Next
' ... or you could do ...
Console.Clear()
' this demonstrates how you can convert each row to a string
For y As Integer = 0 To Map.Count - 1
Console.SetCursorPosition(0, y)
Console.Write(New String(Map(y).ToArray))
Next
End Sub
Public Sub CreateMap()
Dim MapTog As String = _
"--------------------------------------------------------------------------------" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- --------------------- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "------------------- ---------------------" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- --------------------- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "- -" & vbCrLf _
& "--------------------------------------------------------------------------------"
Map.Clear()
For Each line As String In MapTog.Split(vbCrLf.ToCharArray, StringSplitOptions.RemoveEmptyEntries)
Map.Add(New List(Of Char)(line.ToCharArray))
Next
End Sub
End Module
谢谢你的帮助,我对编码很陌生,所以这很好。然而,我似乎有一个问题,“该值必须大于或等于零,并且小于该维度中控制台的缓冲区大小。参数名称:left实际值为80。”在console.SetCursorPos(x,y)的displaymap()子部分中,表示您的映射宽度大于控制台屏幕。要么减小地图宽度(从每行中删除一些字符),要么增大控制台屏幕的大小(单击控制台窗口的左上角图标并选择属性,然后将缓冲区和宽度更改为80)。我使用了console.BufferWidth=80,如果然后说缓冲区太小,需要81,但是,宽度应仅为80个字符长。无论我输入什么缓冲区,它都是额外的1。这可能与MapTog长度约为1500个字符有关。SetCursor()函数基于0(零)。请注意,我使用:
循环x作为整数=0映射(y)。Count-1
因此最左边的列为0(零),最右边的列为79。