您的位置:首页 > 编程语言 > VB

VB.net遍历维数未知的多维数组的办法

2006-12-02 13:20 330 查看
当一个数组是多维数组。并且每维的上下标都不定的情况下。我们如何去遍历整个数组呢?我不知道大家都有什么奇招妙法。我昨天亲自写了一个程序,用于遍历一个未知的数组。只知道他是一个数组,并且里面存储的是字符串。程序很简单。就是首先获得 数组的 秩,然后获得每维的长度和上下标,以及总长度。 再放到循环中处理。

本程序默认数组中的数据类型为System.String。当然如果我们想把程序写的更加完美的话。在处理数据的时候,可以通过 GetType()方法获得它的数据类型。然后再做不同的处理即可。

代码如下:


        Dim a(,,) As String = {{{"NorthSnow", "塞北的雪"}, {"CSDN", "中国最大的开发者网络"}}, {{"CRC", "长春轨道客车股份有限公司"}, {"BEC", "剑桥商务英语"}}, {{"Net_Lover", "孟子E章"}, {"China", "中华人民共和国"}}}


        Dim i As Integer


        Dim j, k, l, m, n As Integer


        Dim qq(,) As Integer


        Dim pp() As Integer


        Dim rr(,) As Integer


        ReDim rr(a.Rank - 1, 1)


        l = 1  '返回数组的总长度, 也可以通过 Length 属性 或者 LongLength  返回


        For i = 0 To a.Rank - 1


            l = l * (a.GetUpperBound(i) - a.GetLowerBound(0) + 1)


            rr(i, 0) = l


            rr(i, 1) = a.GetUpperBound(i) - a.GetLowerBound(0) + 1


        Next




        ReDim qq(l - 1, a.Rank - 1)   '返回存储


        ReDim pp(a.Rank - 1)


        For i = 0 To a.Rank - 1


            k = 0


            k = 0


            For m = 1 To rr(i, 0) / rr(i, 1)


                For j = a.GetLowerBound(i) To a.GetUpperBound(i)


                    For n = 1 To l / rr(i, 0)


                        qq(k, i) = j


                        k = k + 1


                    Next


                Next


            Next


        Next


        Dim str1 As New System.Text.StringBuilder


        Dim arrTemp() As Integer


        ReDim arrTemp(a.Rank - 1)


        For i = 0 To l - 1


            For j = 0 To a.Rank - 1


                arrTemp(j) = qq(i, j)


            Next


            str1.Append(a.GetValue(arrTemp))


            str1.Append(vbCrLf)


        Next


        MsgBox(str1.ToString)


    

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息