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开始 –