首页 > 解决方案 > 将 int 数组拆分为两个数组偶数和奇数 VBscript 错误

问题描述

我已经为打印出来的数字数组编写了代码。我现在正在编写代码以将数组拆分为偶数和非数。我已经开始使用 if 语句来分隔数字,但我正在努力寻找如何做到这一点的解决方案。我下面的代码失败了,因为它无法拆分数字。

Sub main()
    a=Array(5,10,15,20)
for each x in a
    Msgbox(x)

    If MyArray(I) / 2 = MyArray(I) 
        List1.AddItem MyArray(I) ' Even Integers
    Else
        List2.AddItem MyArray(I) ' Odd Integers
    End if
next


End Sub 

标签: vbscript

解决方案


正如 Lankymart 建议的那样,最简单的方法是使用Mod()并检查余数是 1 还是 0,但您也可以使用您似乎正在努力的方法来做到这一点:

If MyArray(index)/2 = Int(MyArray(index)/2) Then
    ' Even number
Else
    ' Odd number
End If

Mod()方法:

If MyArray(index) Mod 2 = 0 Then
    ' Even number
Else
    ' Odd number
End If

这是一个完整的子例程,演示了您要执行的操作:

Dim arr(4) As Integer
Dim arrEven() As Integer
Dim iEvenValues As Integer
Dim arrOdd() As Integer
Dim iOddValues As Integer
Dim iCounter As Integer

' Initialize array
arr(0) = 5
arr(1) = 10
arr(2) = 15
arr(3) = 20

For iCounter = 1 To UBound(arr)

    If arr(iCounter - 1) Mod 2 = 0 Then
        iEvenValues = iEvenValues + 1
        ReDim Preserve arrEven(iEvenValues)
        arrEven(iEvenValues - 1) = arr(iCounter - 1)
    Else
        iOddValues = iOddValues + 1
        ReDim Preserve arrOdd(iOddValues)
        arrOdd(iOddValues - 1) = arr(iCounter - 1)
    End If
Next

Dim sValues As String
sValues = "Even values (" & iEvenValues & "):"
For iCounter = 1 To UBound(arrEven)
    sValues = sValues & " " & arrEven(iCounter - 1)
Next

MsgBox sValues

sValues = "Odd values (" & iOddValues & "):"
For iCounter = 1 To UBound(arrOdd)
    sValues = sValues & " " & arrOdd(iCounter - 1)
Next

MsgBox sValues

推荐阅读