here is the deal :

compteur = compteur + 1;
if ( compteur == 1 ) {
    petiteComm = commTotal;
    grandeComm = commTotal;
} else {
    if ( commTotal < petiteComm ) {
        petiteComm = commTotal; 
    }
    if ( commTotal > grandeComm ) {
         grandeComm = commTotal;
    }
}

Он говорит, что petite Comm, возможно, не был инициализирован, но это произойдет из-за first if, поскольку compteur будет в 1 в первый раз. Я не знаю, что делать, чтобы это исправить.

-1
Félix Montreuil 1 Мар 2015 в 09:32

2 ответа

Лучший ответ

Почему бы вам просто не написать petiteComm = 0 перед if. Это должно помочь.

0
Kev 1 Мар 2015 в 06:35

Трудно понять, с каким языком вы здесь работаете, но похоже, что вы, тем не менее, переоцениваете компилятор.

Как уже упоминали другие, вам нужно указать начальное значение. Вы можете сделать это так, как считаете нужным, но, глядя на синтаксис, который вы нам предоставили,

petiteComm = 0;

Должно сработать. У меня, вероятно, возникнет соблазн установить его на null или -1, но, не зная больше об обстоятельствах, я не хотел бы больше предполагать об этом.

Как правило, компиляторы не ищут последствий второго уровня. То есть они скажут вам, если переменной никогда не присваивается значение, как вы видите здесь, но они недостаточно «умны», чтобы сделать вывод, будет ли им присвоено значение.

Рассмотрим следующий блок кода, который иллюстрирует ту же ошибку, что и вы, но немного более кратко:

x = 0

if(x == 0) {
    y = 10;
}

print(y);

x будет всегда равным нулю, так что блок if будет выполняться всегда, но (большинство, включая ваш) компиляторы не смогут это обнаружить. Они просто увидят, что неинициализированная переменная y используется из ниоткуда. Простое решение - инициализировать y значением по умолчанию. В качестве альтернативы вы можете вызвать исключение в блоке else, чтобы указать, что произошло что-то непредвиденное или операции были выполнены не в порядке. Это исключение должно, опять же, в зависимости от языка, считаться маршрутом выхода и, следовательно, избегать любых дополнительных проверок, как вы видите.

Все дело в обстоятельствах.

0
Matthew Haugen 1 Мар 2015 в 06:43