我正在研究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
答案 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)