2016-11-04 55 views
-1

從標題主要不言自明,試圖在控制檯中顯示此數組。如何使多維數組顯示vb.net中的所有值?

Sub Array() 
    Dim board(5, 5) As String 
    board(1, 1) = "-" 
    board(1, 2) = "|" 
    board(1, 3) = "-" 
    board(1, 4) = "|" 
    board(1, 5) = "-" 
    board(2, 1) = "-" 
    board(2, 2) = "|" 
    board(2, 3) = "-" 
    board(2, 4) = "|" 
    board(2, 5) = "-" 
    board(3, 1) = "-" 
    board(3, 2) = "|" 
    board(3, 3) = "-" 
    board(3, 4) = "|" 
    board(3, 5) = "-"`  
+1

答案是不言自明的:使用循環 – Plutonix

+0

我對編碼非常認真,所以我沒有真正覺得它不言自明 –

回答

0

使用循環,如由他人建議,就是答案。但是,對於多維數組,它並不像聲音那麼簡單。如果你想打印數組作爲網格,你將需要嵌套循環,並知道你可以使用Array.GetLength得到每個數組維度的界限。所以,這樣的事情可能給你你在找什麼:

For i = 0 To board.GetLength(0) - 1 
    For j = 0 To board.GetLength(1) - 1 
     Console.Write(If(board(i, j), "")) 
    Next 
    Console.WriteLine() 
Next 

結果(有一些空行刪除 - 見下文):

-|-|- 
-|-|- 
-|-|- 

你會發現,我在打印時使用If(board(i, j), "")值 - 這是因爲你的數組裏散佈着空值,而當我在LINQPad中測試時,這些值打印出「null」。一個普通的控制檯可能不太挑剔,或者可能會更挑剔,並開始向你發出嗶嗶聲(我沒有測試它)。

一些空值的原因是,當你定義一個數組時,你指定了每個維度的上限,並且邊界是從零開始的,所以Dim board(5, 5) As String給你一個數組,每個維度有6個元素(0到5)。您正在跳過0索引,所以目前你的陣列看起來像這樣:

Array Layout

我想你可以調整你的循環,以補償(例如,從1開始,而不是0),但是這不是我會建議。

+0

感謝幫助隊友意味着很多,對不起,如果我的問題似乎模糊或愚蠢。 –

0

簡單For Each

For Each item In board 
    Console.WriteLine(item) 
    'Or as one-liner: 
    Console.Write(item) 
Next