从一个阵列生成多个数组

时间:2015-11-07 13:39:05

标签: arrays vb.net

我正在研究vb.net中的项目,我有一个整数数组,例如(1,8,9,8),我需要的是通过一次为每个项目添加1来从中生成数组所以第一个数组假设为(2,8,9,8),第二个数组(1,9,9,8)等等,我试过这段代码:

Function myarray(ByVal arra1() As Integer, ByVal arran() As Integer, ByVal i As Integer) As Integer
    For i = 0 To arra1.Length - 
        arran(i) = arra1(i)
        arran(i) = arra1(i) + 1
      Next
End Function

2 个答案:

答案 0 :(得分:0)

首先声明你的初始数组。

' declare initial array
Dim arr1 = {1, 8, 9, 8}

然后为结果声明一个锯齿状数组。由于初始数组有4个元素,因此它将创建一个4个数组。

' declare a jagged array for the result
Dim result(arr1.Length - 1)() As Integer

然后克隆初始数组,只更改其中一个值。

For i = 0 To arr1.Length - 1

  ' clone the initial array
  result(i) = arr1.Clone()

  ' only change the element at index = i
  result(i)(i) += 1

Next

结果是:

2 8 9 8 
1 9 9 8 
1 8 10 8 
1 8 9 9 

完整来源:

Module Module1

    Sub Main()

        ' declare initial array
        Dim arr1 = {1, 8, 9, 8}

        ' declare a jagged array for the result
        Dim result(arr1.Length - 1)() As Integer

        For i = 0 To arr1.Length - 1

            ' clone the initial array
            result(i) = arr1.Clone()

            ' only change the element at index = i
            result(i)(i) += 1

        Next

        ' print result
        For i = 0 To result.Length - 1
            For j = 0 To result(i).Length - 1
                Console.Write(result(i)(j) & " ")
            Next
            Console.WriteLine()
        Next

        Console.ReadKey(True)

    End Sub

End Module

如果您想创建一个功能。

Function CopyArray(ByVal source As Integer(), i As Integer) As Integer()

    ' clone the initial array
    Dim temp = source.Clone()

    ' only change the element at index = i
    temp(i) += 1

    Return temp

End Function

你在迭代中调用函数。

For i = 0 To arr1.Length - 1

    result(i) = CopyArray(arr1, i)

Next

功能完整的来源:

Module Module1

    Sub Main()

        ' declare initial array
        Dim arr1 = {1, 8, 9, 8}

        ' declare a jagged array for the result
        Dim result(arr1.Length - 1)() As Integer

        For i = 0 To arr1.Length - 1

            result(i) = CopyArray(arr1, i)

        Next

        ' print result
        For i = 0 To result.Length - 1
            For j = 0 To result(i).Length - 1
                Console.Write(result(i)(j) & " ")
            Next
            Console.WriteLine()
        Next

        Console.ReadKey(True)

    End Sub

    Function CopyArray(ByVal source As Integer(), i As Integer) As Integer()

        ' clone the initial array
        Dim temp = source.Clone()

        ' only change the element at index = i
        temp(i) += 1

        Return temp

    End Function

End Module

答案 1 :(得分:0)

我从当前给定背景下的问题中了解到这可能是您需要的解决方案:

Function myarray(ByVal arra1() As Integer, ByVal arran() As Integer, ByVal arrNumber As Integer) As Integer
    arran=arra1.Clone()
    For i As Integer = 0 To arra1.Length - 1
        If i = (arrNumber - 1) Then ' IF arrNumber is 1 then +1 to index 0, If it is 2 then +1 to index 1
            arran(i) = arra1(i) + 1
        Else
            arran(i) = arra1(i)
        End If
    Next
    'Print the array
    For i = 0 To arran.Length - 1
        Console.Write(arran(i) & " ")
    Next
    Console.WriteLine()
    Return 0
End Function

您可以将其称为

Dim a3() As Integer={1,8,9,8}
Dim a4() As Integer={}
myarray(a3,a4,1)
myarray(a3,a4,2)
myarray(a3,a4,3)
myarray(a3,a4,4)

当您使用arra1作为(1,8,9,8)
调用此函数时 和arrNumber为1然后arran将是(2,8,9,8),
arrNumber为2然后arran将是(1,9,9,8),
arrNumber为3然后arran将是(1,8,10,8)和
arrNumber为4然后arran将是(1,8,9,9)