0

コードを実行した後、この例外が発生しました。何が問題なのかわかりません!!

プログラムは最初にint配列を作成し、次にintと同じ長さの文字列配列を作成し、次にvのすべてのインデックスを取得してバイナリに変換し、数字が4未満の場合はゼロを追加し、文字列配列を操作した後に文字列インデックスに格納しますint 配列を返す toBinaryInteger メソッドにそれを渡します toBinaryInteger メソッドは、32 であると想定される長さ st.length*4 の配列を作成し、st から各エントリを取得し、その各桁を取得して p 配列に格納し、次にプログラム結果を出力しますが、この時点で例外が表示されます。プログラムをうまく説明できれば幸いです。どんなアイデアでも助けてください。

こんにちは、すべて の問題が解決しました。問題は、結果の代わりに間違った配列を印刷していたことです。良いデバッガー用に st の特別な tankx を印刷しました。

 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;   
    }
4

1 に答える 1

2

私はあなたのコードをコンパイルしました。結果のエラーは、問題が次の行にあるように見えることを教えてくれました:

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

result[k]おそらく、代わりにそこに印刷するつもりでしたか?

于 2010-12-14T22:56:54.167 に答える