2016-12-06 10 views
0

2ヶ月前にJavaの学習を開始しましたが、この問題が発生しました。誰かが私にこの1つを助けてくれますか?スレッド "main"の例外java.lang.StringIndexOutOfBoundsException:文字列のインデックスが範囲外です。52

質問:

は、元の文字列の各桁の文字列を、与えられた

は、次の文字の多く出現して数字を置き換えます。

したがって、文字列 "a3tx2z"は "attttxzzz"を生成します。

マイコード:

@param str 
    @return blown up string 
    public static String blowup(String str) { 
    StringBuilder stri = new StringBuilder(str); 
    for(int i = 0; i<stri.length();i++){ 
     if(Character.isDigit(stri.charAt(i))){ 
      int a = stri.charAt(i), 
       c = a - 1; 
      char b = str.charAt(a+1);   
      while (a >0){ 
       stri.insert(c, b); 
       a --; 
      } 
     } 
    } 
    str = stri.toString(); 
    return str; // TODO ADD YOUR CODE HERE 
} 

例外:前述したように

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 52 
at java.lang.String.charAt(String.java:658) 
at HelloWorld.blowup(HelloWorld.java:15) 
at HelloWorld.main(HelloWorld.java:6) 
+1

に役立つかもしれないが、あなたは番号に文字を変換されていません。 'int型、A = stri.charAt(I)は、'文字を返します。コード、麻痺ではないエル。 'int a =(stri.charAt(i) - '0')'を試してください – BretC

答えて

0

、あなたはstri年代とstr「アップ混乱Sを取得していない変換番号int秒...

public static String blowup(String str) { 
    StringBuilder stri = new StringBuilder(str); 
    for (int i = 0; i < str.length(); i++) { 
     if (Character.isDigit(stri.charAt(i))) { 
      int a = str.charAt(i) - '0', 
        c = a - 1; 

      char b = str.charAt(i + 1); 
      while (a > 0) { 
       stri.insert(c, b); 
       a--; 
      } 
     } 
    } 
    str = stri.toString(); 
    return str; // TODO ADD YOUR CODE HERE 
} 

(これはまだ途中で正しく動作しませんが、それは助けてください...)

0

要するに、stri.charAt(i)をintとして取得しようとすると数値ではありませんcharのASCIIコードです。すなわち "ab3cは" .charAtは、(2)3はありませんが、51は、代わりに次のものが必要です。

int a= Integer.valueOf(stri.substring(i,i+1)); 

をところで:?あなたは「atttxzzさせない "attttxzzz" "a3tx2z" 利回りと確信している

+0

助けてくれてありがとう。私は "a3tx2z"は "attttxzzz"を、もう一つの例は "2x3Z"が "xxxZZZZ"を生成すると確信しています。 –

+0

np。それはまったく論理的ではありません:3tを定義しますが、4ttttを持っています...しかし、要件は必須です:) – Vadim

0
public class Hello{ 
    public static void main(String ...args){ 
    String str = "a3tx2z"; 
    StringBuilder stri = new StringBuilder(); 
    for(int i = 0; i<str.length();i++){ 
     if(Character.isDigit(str.charAt(i))){ 
      int a = Character.getNumericValue(str.charAt(i)); 
      char b = str.charAt(i+1); 
      if(a == 0){ 
      i++; 
      }else{ 
      for(int j = 0;j<a-1;j++){ 
       stri.append(b); 
      } 
      } 
     }else{ 
      stri.append(str.charAt(i)); 
     } 
    } 
    str = stri.toString(); 
    System.out.println(str); 
    } 
} 

出力:: atttxzz

が、これは....あなたのコードで

+0

ありがとうございました。あなたのコードを読んで、私はその質問を解決する方法を見つけ出す! –

関連する問題