2017-01-29 5 views
2

Ich schreibe ein einfaches Programm, um alle möglichen Passwort-Kombination für eine Reihe von Zeichen auszugeben, aus zu verwenden. Das Passwort muss 5 Zeichen lang sein, also verwende ich 5 For-Schleifen, um jedes zu ersetzen. Aus irgendeinem Grund, wenn ich versuche, Zeichen 4 zu ersetzen, bekomme ich immer eine String-Index außerhalb der Grenzen -1 Ausnahme. Ich bin mir nicht sicher, warum das auch passiert.Teilstring außerhalb der Grenzen in for Schleife

-Code

char[] charList = new char[]{'a','b','c','d','e','f'}; 
String password = "aaaaaa"; 
for (int char1 = 0; char1 < charList.length; char1++) { 
    password = charList[char1] + password.substring(1, 4); 
    for (int char2 = 0; char2 < charList.length; char2++) { 
     password = password.substring(0) + charList[char2] + password.substring(2, 4); 
     for (int char3 = 0; char3 < charList.length; char3++) { 
      password = password.substring(0, 1) + charList[char3] + password.substring(3, 4); 
      for (int char4 = 0; char4 < charList.length; char4++) { 

       //java.lang.StringIndexOutOfBoundsException: String index out of range: -1 below 
       password = password.substring(0, 2) + charList[char4] + password.substring(4); 

       for (int char5 = 0; char5 < charList.length; char5++) { 
        password = password.substring(0, 3) + charList[char5]; 
        System.out.println(password); 
       } 
      } 
     } 
    } 
} 
+0

in den oberen Zeilen, die Sie die Manipulation sind passwort, drucke 'passwort' bei jeder iteration, um den fehler herauszufinden –

+0

Ich würde vorschlagen, nach jeder Änderung ein Passwort zu drucken, um es zu verfolgen. password = password.substring (0) + charList [char2] + passwordstring (2, 4); möglicherweise nicht, was Sie erwarten – efekctive

Antwort

2

password = password.substring(0, 1) + charList[char3] + password.substring(3, 4); ordnet eine Zeichenfolge mit einer Länge von 3 bis Passwort.

Dann rufen Sie password.substring(4) an, die versucht, auf einen Index zuzugreifen, der nicht in der Zeichenfolge vorhanden ist!

+0

Danke, einfacher Fehler meinerseits –

0

Der letzte Index der Teil Methode ist exklusiv, dass die 4. caractère bedeutet nicht taken.you auch bei 1 beginnen, dass es nur drei Zeichen un bedeutet ist Ihre Teilzeichenfolge

Verwandte Themen