2012-03-19 3 views
1

그래서 수학 클래스의 추가 점수를 얻기 위해 pi를 시각화하는 프로그램을 작성하고 있습니다. 6 자리마다 16 진수로 변환됩니다.Pi의 RGB 값 크기 조정

그러나 색상을 조정하려고하면 오류가 발생합니다 (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; 
} 

이 문제에 대한 도움을 주셔서 대단히 감사드립니다. 다행히도 내가 보지 못하는 것이 명백 할 것입니다.

+0

'subArray.length == 1'? –

+0

나는 추측한다. .. 그것은 아직도 잘 돌아 간다. 그러나 거의 10000의 iterations를 위해 또는 그렇게 거의 10000.의 대신으로 단지 달린다. 그리고 그것은 중간을 끝내게되는 error ...을 끝낸다. – user1277591

+0

아, 내가 뭔가있는 것 같아. 10 세트 만 통과하면 오류가 발생하지 않았습니다. 그런 다음 처리 한 문자열에서 숫자 0을 검색해 보았습니다. 아무 것도 없었습니다. 05와 같은 것이 있으면 5로 바꾸고 16 진수 문자열 1 길이로 만듭니다. – user1277591

답변

1

문제는 Integer.toHexString()에서 발생합니다.

0x10 (십진수 16)보다 작은 값을 지정하면 길이가 1 인 문자열을 결과로 얻게되고 subArray [1]은 예외를 throw합니다.