2012-03-19 11 views
1

私の数学クラスの特別な賞として、piを視覚化するプログラムを作成しています。 6桁ごとに16進数に変換されます。PiでのRGB値のスケーリング

しかし、私は色を調整しようとするとエラーに遭遇しています(r、g、bのそれぞれ2桁で99までしか上がらず、255に行きたいので)。私は数千桁のpiを調べ、この6個のセットごとにこのスケール関数を実行し、それをBufferedImageのピクセルに書き込みますが、StringIndexOutOfBoundsExceptionが得られます。私はretArray [i + 1] = subArray [0]を設定しようとしたとき、私は同じエラーが出ていますが、今回は5行目です。何が起こっているのでしょうか?

private String scale(int org){ 
    tmp = Integer.toString(org); 
    retArray = new char[6]; 
    for(int i=0; i<=4; i+=2){ 
     tmpsub = tmp.substring(i, i+2);    //line 5 
     int2 = Integer.parseInt(tmpsub); 
     tmpint = (((float)(int2)/99)*255); 
     intie = (int)(tmpint); 
     tmpsub = Integer.toHexString(intie); 
     subArray = tmpsub.toCharArray(); 
     retArray[i] = subArray[0]; 
     retArray[i+1] = subArray[1];  //String Index Exception on this line 
    } 
    retString = ""; 
    for(int i=0; i<retArray.length; i++) 
     retString+=retArray[i]; 
    return retString; 
} 

ありがとうございました。うまくいけば、私には分かりません。

+0

'subArray.length == 1'? –

+0

私は推測します...まだ10000回程度ではなく、約100回の反復でしかうまく動かないので、実際には意味がありません。途中でエラーが途切れてしまいます。 – user1277591

+0

ああ、私は何かをしていると思う。私はそれが私に間違いを与えなかった10セットを通過するように言ったとき。それから、処理した文字列の中の数字0を検索しようとしましたが、何もありませんでした。私は05のようなものがあればそれを5に置き換え、16進数の文字列1の長さを作ると思います。 – user1277591

答えて

1

問題はInteger.toHexString()にあります。

0x10(小数点以下16桁)未満の値を指定すると、長さ1の文字列が結果として得られ、subArray [1]は例外をスローします。

関連する問題