2017-09-15 18 views
2

私の目標は、文字が小文字であると仮定して、前の文字よりも後にアルファベットで後続する限り、各文字で構成される文字列を返すことです。問題は、(タイトルの中で)エラーが発生し、それがどのように発生しているのか分からないので、これをテストすることさえできません。助けてもらえますか?ここで StringIndexOutOfBoundsExceptionが不明確

は私のコードです:

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

する必要があります私は(私は0 = int型のために '引き受けます。 k

答えて

2

コメントを1として、あなたがfor (int i=0; k< alpha.length(); i++)for(int i=0; i< alpha.length(); i++) を変更する必要がありますし、あなたの状態を変更し、

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

、それは必要な出力

+0

ミスタイプ「k」を見つけていただきありがとうございます。しかし、別の問題は私が変更するときです str.charAt(k)> = alpha.charAt(i) 〜 str.charAt(k)== alpha.charAt(i) これはちょうど入力 "adatplqzh"を返します " – Christopher

+0

@Christopherは、両方のループの 'int pos = 0;'側を作成し、内部ループを 'for(int i = pos; i

0

を与えるだろう内側ループが間違って見えます。

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

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

関連する問題