【问题标题】:Visual Basic - Storing information from an array to a two dimensional arrayVisual Basic - 将信息从数组存储到二维数组
【发布时间】:2013-06-07 13:55:22
【问题描述】:

我有一些代码,其中我有一个“地图”存储在一个字符串中,然后我将它放入一个数组中。该数组已将字符串分隔为每个索引位置的字符。我现在想将这些字符放入一个二维数组中,如下所示是我的尝试:

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 循环有问题,但我无法弄清楚。非常感谢任何帮助,谢谢! :)

【问题讨论】:

    标签: arrays visual-studio-2008 loops multidimensional-array


    【解决方案1】:

    这是一种方法:

    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(零)。请注意,我循环使用:For x As Integer = 0 To Map(y).Count - 1 所以最左边的列是 0(零),最右边的列是 79。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-10
    • 2016-10-16
    • 1970-01-01
    • 2021-10-03
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多