【发布时间】:2012-03-19 02:30:03
【问题描述】:
因此,为了获得数学课的额外学分,我正在编写一个程序来可视化 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;
}
非常感谢您对这个问题的任何帮助。希望这是我看不到的明显的东西。
【问题讨论】:
-
我猜......虽然它仍然运行良好,但只运行了大约 100 次左右而不是几乎 10000 次。它在中途出现错误。 . 完成一堆之后。
-
啊,我想我正在做某事。当我只告诉它通过 10 组时,它并没有给我一个错误。然后我尝试在它处理的任何字符串中搜索数字 0,但没有。我想如果我有类似 05 的东西,它会用 5 替换它并使十六进制字符串的长度为 1。
-
另见
PiRaster。