C _ Функция суммирования не дает желаемого результата

Попробуйте запустить часть циклического цвета кода в отдельном потоке. Например,

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.

0
задан Barmar 28 February 2019 в 17:35
поделиться

2 ответа

Проблема в вашей функции суммирования:

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;
}
0
ответ дан dbush 28 February 2019 в 17:35
поделиться

Вы передаете старую sum в cvtdigit, вы должны добавить к ней, а не использовать неинициализированную локальную переменную.

Вы получаете числовое значение цифры, вычитая из нее '0'.

int cvtdigit(int sum, char c)
{
    int d = c - '0';
    sum += d;
    return sum;        
}
0
ответ дан Barmar 28 February 2019 в 17:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: