1
因此,为了获得数学课的额外荣誉,我正在编写一个程序来使pi可视化。每6位数字转换为十六进制颜色。但是,当我尝试缩放颜色时(因为r,g和b每个都有2位数,我只能达到99,而我想要达到255),所以遇到了一个错误。我经历了pi的几千位数,并在每组6中运行这个缩放函数,然后将它写入BufferedImage中的一个像素,但是我不断收到StringIndexOutOfBoundsException。当我尝试设置retArray [i + 1] = subArray [0]时,我得到了同样的错误,但是这次是在第5行。任何想法是怎么回事?在Pi中缩放RGB值
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;
}
非常感谢您对此问题的任何帮助。希望这是明显的,我没有看到。
'subArray.length == 1'? – 2012-03-19 02:39:31
我猜...它并没有什么意义,尽管它仍然运行良好,但只有大约100次迭代,而不是完全近10000次,并且在完成了一堆之后,它会得到错误。 – user1277591 2012-03-19 02:43:55
ahhh我想我正在做点什么。当我只告诉它通过10套时,它并没有给我一个错误。然后我尝试在它处理的任何字符串中搜索数字0,但没有。我想如果我有像05这样的东西,它将用5代替它,并使得十六进制字符串的长度为1. – user1277591 2012-03-19 02:50:39