當前位置:編程學習大全網 - 編程語言 - vb中如何將字符串中連續的數字分組

vb中如何將字符串中連續的數字分組

這個問題比較繁,而且難度在於使用二維動態數組,且不知道數組的規模;

首先,我的理解,妳的原始數據,應該是已經從小到大排序了的?

第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

Print

Next i

End Sub

代碼經過測試,已經通過,妳可以直接復制使用。

說明:妳的數據" 3 4 5 8 9 10 14 15 16"裏,3前面的空格要刪除,否則代碼適當修改!!!

  • 上一篇:遊戲裏的掛機腳本壹般都是怎麽寫的?
  • 下一篇:java編程:秘聞解碼:原來字母為A,轉換後為D,以此類推, 照片詳情,謝謝哦
  • copyright 2024編程學習大全網