0
Dies ist mein Code und wenn ich es ausführen scheint Index außerhalb der Grenzen des Arrays in Zeile b = Asc (y (j + m)). Ich habe versucht, Try and Catch und es hat nicht geklappt.Index war außerhalb der Grenzen des Arrays 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
Wie wäre es mit einem Versuch, den Index nicht über die Grenzen des Arrays hinausgehen zu lassen? Verwenden Sie den Debugger, und durchlaufen Sie den Code. Was zeigt dir das? Wir können das nicht für Sie tun, weil wir nicht wissen, was Sie als 'x, y, SX, SY' an Ihre SMITH-Funktion übergeben. –
Was sind die Werte von y, j und m? Ich vermute, dass etwas nicht richtig eingestellt ist. Debugging sollte helfen? – Hexie
Sie haben immer eine Ausnahme bei y (j + m). j + m bei der letzten Iteration ist gleich n. Daher würde y (n) außerhalb der Array-Länge liegen. Ich denke, du brauchst das a als Asc (y (j + (m-2)) und b = Asc (y (j + m). Du musst vielleicht bei j = 1 anfangen. –