首先,我的理解,妳的原始數據,應該是已經從小到大排序了的?
第1步:妳已經會了,使用Split()函數,把它拆分存放到數組c裏了。
第2步:
當然,采用循環,進行對數組從頭到尾的掃描,壹壹保存到新的數組裏,本題的關鍵是難點前面已經敘述:
我的處理,先掃描壹次數組c,找到二維數組中,需要的最大規模(因為兩個維度的值都不知道),為了使得程序能夠靈活適應實際的情況,又不浪費空間。先獲得數組第1個維度的值,和第2個維度的值,考慮到可能第2個維度的值還不壹樣,采用最大值。舉例:妳列舉的情況,需要壹個3*3的二維數組,但是也有可能數據為:“1 2 3 4 5 67 8 9 10”
代碼如下:
Option Explicit
Private Sub Command1_Click()
Dim a As String
Dim c
Dim n As Integer
Dim i As Integer
Dim j As Integer
Dim K As Integer '數組個數
Dim L As Integer
Dim MyMax As Integer '每個數組的規模
Dim SJ As String
Dim d() As String
a = "3 4 5 8 9 10 14 15 16"
c = Split(a, " ")
n = UBound(c) '獲取數組c的最大下標
'首先求出需要幾個數組以及每個數組的規模
K = 1
L = 1
SJ = c(0)
MyMax = 0
For i = 1 To n
If CInt(c(i)) <> CInt(c(i - 1)) + 1 Then
If L > MyMax Then MyMax = L
K = K + 1
L = 0
End If
L = L + 1
Next i
ReDim d(K, MyMax) As String
'開始
K = 1
L = 1
SJ = c(0)
d(K, L) = SJ
For i = 1 To n
If CInt(c(i)) = CInt(SJ) + 1 Then
L = L + 1
SJ = c(i)
d(K, L) = SJ
Else
SJ = c(i)
K = K + 1
L = 1
d(K, L) = SJ
End If
Next i
'輸出
For i = 1 To K
For j = 1 To UBound(d, 2)
Print d(i, j); " ";
Next j
Next i
End Sub
代碼經過測試,已經通過,妳可以直接復制使用。
說明:妳的數據" 3 4 5 8 9 10 14 15 16"裏,3前面的空格要刪除,否則代碼適當修改!!!