2017-09-15 2 views
2

Mein Ziel ist es, eine Zeichenfolge, die aus jedem Buchstaben besteht, solange der Buchstabe später im Alphabet als seine vorherige ist, vorausgesetzt, das Wort ist Kleinbuchstaben. Problem ist, ich kann das nicht einmal testen, weil ich einen Fehler (im Titel) bekomme und ich bin mir nicht sicher, wie es passiert. Kann ich etwas Hilfe haben?StringIndexOutOfBoundsException unklar

Hier ist mein Code:

class Main { 
    static String alphabetical(String str) 
    { 
     String alpha="abcdefghijklmnopqrstuvwxyz"; 
     String betical=""; 
     for(int k=0;k<str.length();k++){ 
      for (int i=0;k<alpha.length();i++){ 
      if(str.charAt(k)>=alpha.charAt(i)){ 
       betical+=str.charAt(k); 
      } 
      } 
     } 
     return betical; 
    } 
    //test case below (dont change): 
    public static void main(String[] args){ 
     System.out.println(alphabetical("adatplqzh")); //result should be "adtz" 
    } 
} 
+5

Ich gehe davon würde 'for (int i = 0; k

Antwort

2

Wie pro Kommentar sollten Sie for (int i=0; k< alpha.length(); i++) zu for(int i=0; i< alpha.length(); i++) ändern und die Ihren Zustand ändern,

if(str.charAt(k)==alpha.charAt(i)){  
        betical+=str.charAt(k); 
       } 

und es wird die erforderliche Ausgabe

+0

Danke, dass du den Tippfehler" k. " Ein anderes Problem ist jedoch, wenn ich str.charAt (k)> = alpha.charAt (i) zu str.charAt (k) == alpha.charAt (i) es gibt nur die Eingabe "adatplqzh" " – Christopher

+0

@Christopher machen Sie eine 'int pos = 0;' out Seite beider Schleifen und ändern Sie die innere Schleife zu 'für (int i = pos; i

0

geben Ihre innere Schleife sieht falsch aus,

for (int i=0;k<alpha.length();i++){ 

sollte for (int i=0;i<alpha.length();i++)