Масштабирование значений RGB в пи - PullRequest
1 голос
/ 19 марта 2012

Так что для дополнительной оценки за мой урок математики я пишу программу для визуализации pi. Каждые 6 цифр преобразуются в шестнадцатеричный цвет.

Тем не менее, я сталкиваюсь с ошибкой, когда пытаюсь масштабировать цвета (поскольку с 2 цифрами для r, g и b я могу перейти только до 99 и хочу перейти к 255). Я просматриваю несколько тысяч цифр числа пи и запускаю эту функцию масштабирования для каждого набора из 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;
}

Большое спасибо за любую помощь в решении этой проблемы. Надеюсь, это что-то очевидное, чего я не вижу.

1 Ответ

1 голос
/ 19 марта 2012

Проблема в Integer.toHexString ().

Если вы дадите ему значение меньше 0x10 (16 в десятичном виде), вы получите в результате строку длиной один, итогда subArray [1] выдаст исключение.

...