そこで、数学の授業の単位を取得するために、円周率を視覚化するプログラムを書いています。6 桁ごとに 16 進数の色に変換されます。
ただし、色をスケーリングしようとするとエラーが発生します (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;
}
この問題についてご協力いただきありがとうございます。うまくいけば、それは私には見えない明らかなものです。