Попробуйте запустить часть циклического цвета кода в отдельном потоке. Например,
Thread thread = new Thread( new Runnable() {
public void run() {
while(true) {
int number = // generate random number ;
runOnUiThread( new Runnable() {
public void run() {
TextView text = // get your TextView ;
text.setTextColor(number);
{
{
try {
Thread.sleep(DELAY);
} catch (InterruptedException e) {}
}
}
}
thread.start();
Вам нужно будет запустить код, который фактически изменяет TextView через runOnUiThread
, потому что Android не разрешает другим потокам изменять части Activity.
Проблема в вашей функции суммирования:
int cvtdigit(int d, char c)
{
int sum;
sum=sum+d;
return (sum);
}
Оригинал sum
из main
хранится в d
. В итоге вы создаете новую переменную с именем num
, которая не инициализируется, добавляя значение d
(т.е. sum
в main
) к неинициализированному sum
и возвращая это значение. Вот почему вы получаете странные цифры.
Измените функцию для удаления sum
и добавьте значение d
(которое вы должны переименовать в sum
) и c
, сначала вычтя '0'
, т.е. код символа для символа 0 из [1115 ] так что вы получите значение от 0 до 9.
int cvtdigit(int sum, char c)
{
sum=sum+(c-'0');
return sum;
}
Вы передаете старую sum
в cvtdigit
, вы должны добавить к ней, а не использовать неинициализированную локальную переменную.
Вы получаете числовое значение цифры, вычитая из нее '0'
.
int cvtdigit(int sum, char c)
{
int d = c - '0';
sum += d;
return sum;
}