0
這是我的代碼,當我運行它時,出現索引超出了行b = Asc(y(j + m))中數組的邊界。我試過Try and Catch,但沒有成功。索引超出數組範圍VB
Public Function SMITH(x, y, SX, SY)
Dim a, b, j As Integer
result = 0
m = x.Length
n = y.Length
preBmBc(x)
preQsBc(x)
j = 0
While (j <= (n - m))
If (SX = SY.ToString.Substring(j, m)) Then
result = 1
End If
a = Asc(y(j + (m - 1)))
b = Asc(y(j + m))
j = j + Math.Max(bmBc(a), qsBc(b))
End While
Return result
End Function
如何不讓索引超出數組邊界?使用調試器,並逐步完成代碼。這顯示你什麼?我們不能爲你做這件事,因爲我們不知道你將'x,y,SX,SY'傳遞給你的SMITH函數。 –
y,j和m的值是多少?我懷疑有些東西沒有正確設置。調試應該有所幫助? – Hexie
您將在y(j + m)處始終有一個例外。最後一次迭代中的j + m等於n。因此y(n)會超出數組長度。我認爲你需要一個asc(y(j +(m-2))和b = asc(y(j + m)。你可能需要從j = 1開始 –