2016-04-26 15 views
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 
+0

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. –

+0

Was sind die Werte von y, j und m? Ich vermute, dass etwas nicht richtig eingestellt ist. Debugging sollte helfen? – Hexie

+0

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. –

Antwort

0

Haben Sie versucht, m ​​= "m-1" für b auch zu machen? Sie müssen den Code wirklich mit Hilfe von Haltepunkten und dem Debugger durchgehen, um herauszufinden, wann das Programm die OutOfRangeException auslöst.

Verwandte Themen