2017-09-15 146 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++)