因此,为了获得数学课的额外学分,我正在编写一个可视化pi的程序。每6位转换为十六进制颜色。
但是,当我尝试缩放颜色时遇到错误(因为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;
}
非常感谢您对这个问题的帮助。希望这是显而易见的,我看不到。
最佳答案
问题在于Integer.toHexString()。
如果给它一个小于0x10的值(十进制为16),结果将得到一个长度为1的字符串,然后subArray [1]将引发异常。