2016-11-04 60 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