計算具體的數組元素的總和我有兩個數組如何用vb.net
x = [1 1 1 0 2 3 1 1]
y = [1 2 3 4 5 6 7 8]
如何計算Ÿ對所有x(i) = 1
得到結果1+2+3+7+8
元素的總和?
我已經使用了循環,如果再方法來計算這樣
if x(i) = 1 then sum = sum + y(i)
總和值有其他方法得到的結果(求和,平均值,計數......)?
謝謝。
計算具體的數組元素的總和我有兩個數組如何用vb.net
x = [1 1 1 0 2 3 1 1]
y = [1 2 3 4 5 6 7 8]
如何計算Ÿ對所有x(i) = 1
得到結果1+2+3+7+8
元素的總和?
我已經使用了循環,如果再方法來計算這樣
if x(i) = 1 then sum = sum + y(i)
總和值有其他方法得到的結果(求和,平均值,計數......)?
謝謝。
由於您只想對y中的數字進行求和,對應於x中的1而不是x中的0,則可以乘以x * y,這看起來比If更清潔。這裏有一些方法
Dim x = {1, 1, 1, 0, 0, 0, 1, 1}
Dim y = {1, 2, 3, 4, 5, 6, 7, 8}
' using a for loop
Dim sum1 As Integer = 0
For i = 0 To x.Length - 1
sum1 += If(x(i) = 1, 1, 0) * y(i)
Next
Console.WriteLine(sum1)
' using LINQ #1
Dim sum2 As Integer = x.Select(Function(i, index) If(i = 1, 1, 0) * y(index)).Sum()
Console.WriteLine(sum2)
' using LINQ #2
Dim sum3 As Integer = x.Zip(y, Function(x1, y1) If(x1 = 1, 1, 0) * y1).Sum()
Console.WriteLine(sum3)
' using LINQ #3
Dim sum4 As Integer = Enumerable.Range(0, x.Length).Sum(Function(i) If(x(i) = 1, 1, 0) * y(i))
Console.WriteLine(sum4)
Console.ReadLine()
的For
是很清楚,所以我不知道爲什麼你不會使用它,但你可以使用LINQ這也:
Sub Main
Dim x = {1, 1, 1, 0, 2, 3, 1, 1}
Dim y = {1, 2, 3, 4, 5, 6, 7, 8}
Dim sum = y.Where(Function(v, i) x(i) = 1).Sum()
Console.WriteLine("Sum is {0}", sum)
End Sub
打印
總和爲21
但是,如果數組x的元素不僅是0或1,但也有其他類似的[0 0 1 2 0 3 0 1 0] .....如何使用LINQ來選擇和求和x(i)= 1的y(i)值?謝謝。 –
也許'x = [1 1 1 0 0 0 1 1]'以外的東西會使這個更清楚嗎?但我會編輯我的答案。 – djv