2012-03-19 139 views
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; 
} 

非常感謝您對此問題的任何幫助。希望這是明顯的,我沒有看到。

+0

'subArray.length == 1'? – 2012-03-19 02:39:31

+0

我猜...它並沒有什麼意義,儘管它仍然運行良好,但只有大約100次迭代,而不是完全近10000次,並且在完成了一堆之後,它會得到錯誤。 – user1277591 2012-03-19 02:43:55

+0

ahhh我想我正在做點什麼。當我只告訴它通過10套時,它並沒有給我一個錯誤。然後我嘗試在它處理的任何字符串中搜索數字0,但沒有。我想如果我有像05這樣的東西,它將用5代替它,並使得十六進制字符串的長度爲1. – user1277591 2012-03-19 02:50:39

回答

1

問題出在Integer.toHexString()。

如果給它一個小於0x10(十進制數爲16)的值,你會得到一個長度爲1的字符串作爲結果,然後subArray [1]會拋出一個異常。