2010-12-14 11 views
0

私のコードを実行した後、私はこの例外を受け取りました。この例外を解決するにはどうすればいいですか?スレッド "main"の例外java.lang.ArrayIndexOutOfBoundsException

プログラムは、intと同じ長さの文字列配列を最初に作成し、vのすべてのインデックスを取り出してバイナリに変換し、4より小さい桁がゼロの場合は操作後に文字列インデックスに格納しますそれを渡す文字列配列toStringメソッドを呼び出すtoBinaryInteger戻り値int配列toBinaryIntegerメソッドは、長さst.length * 4の配列を作成し、32であると想定される配列を作成し、stから各enteryを取り出し、各桁を取り、pに格納します配列の場合、プログラムは結果を出力しますが、この時点で例外が表示されます。私はプログラムをとてもうまく説明することを願っています。任意のアイデアをお願いします。

こんにちは、すべてのボディ問題がを解決される問題は、私は間違った配列は、結果のinsted印刷されたされた私は、私はあなたのコードをコンパイルし

public static void main(String [] arg) 
    { 
     int [] v={0,11,12,13,14,15,7,8}; 
     String [] st=new String [v.length]; 
     String x=""; 
     for(int i=0;i<st.length;i++) 
     { 
      x=Integer.toBinaryString(v[i]); 
      while (x.length()<4) // add zeroed to left if needed to fit in 4 bits 
       x="0"+x; 
      st[i]=x; 


     } 
     int [] result=toBinaryInteger(st); 
     int count=0; 
     for(int k=0;k<result.length;k++) 
     { 
      System.out.print(st[k]); 
      if(count==4){ 
       System.out.print(" "); 
       count=0; 
      } 

     } 



    } 






public static int [] toBinaryInteger(String [] s) 
    { 
     int [] p=new int [s.length*4]; 
     for(int i=0;i<s.length;i++) 
      { 
      for(int j=0; j<s[i].length();j++){ 
       p[i*4+j]=Integer.parseInt(s[i].substring(j,j+1));//create array of 32 lenght  

       } 
      } 
      return p; 
    } 
+1

toBinaryInteger()は実際に同じサイズの配列を返しますか? – Mehrdad

+5

** **では、** IndexOutOfBoundsExceptionが発生しますか?デバッグ用にコンパイルすると、スタックトレースはエラーが発生した特定の行を示します。 **これはデバッグのステップ1 **です。 –

+0

誰も、実際には長さの配列を返すと言っています。32 – Gain

答えて

2

良いデバッガは、st特別tankxを印刷しました。結果のエラーは、問題がこの行のように見えることを私に言った:

System.out.print(st[k]); 

はおそらく、あなたの代わりにそこresult[k]を印刷するためのもの?

+0

ああ、あなたは真剣に良いデバッガです。私はそれを逃したあなたの答えに似てありがとう – Gain

関連する問題