2017-09-15 92 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

我假设'对(INT I = 0; k

回答

2

由于根据注释,你应该改变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++)