2015-08-03 2 views
-1

В настоящее время я работаю над РПГ, где вы получаете опыт после убийства врага. Вот соответствующий фрагмент кода:Ввод цикла while, когда условие ложно

this.experience_current += experience; 
while(this.experience_current >= EXPERIENCE_MAX); 
{ 
    System.out.println(this.experience_current >= EXPERIENCE_MAX); 
    levelUp(); 
    this.experience_current -= EXPERIENCE_MAX; 
} 

То, что здесь происходит, что, после смерти противника, этот метод вызывается, чтобы добавить опыт текущего общего опыта игрока. Затем эта сумма сравнивается с уровнем опыта, и если общее значение превышает максимальный уровень, мы повышаем и уменьшаем общее значение на максимум. Это в цикле, чтобы обеспечить большие ценности опыта (например, от босса), может привести к тому, что мы начнем несколько раз повышаться.

Проблема, с которой я столкнулась, заключается в том, что этот цикл не должен запускаться, когда он есть. После убийства моего первого врага и получения 3 очков опыта (максимум 100), этот метод называется. Условие не выполняется, но мы все равно вводим цикл while. Строка System.out.println (...) печатает «ложь» на консоли, чтобы подтвердить, что условие нарушено, но тем не менее мы здесь.

Здесь я не программирую многопроцессорное программирование, поэтому я не могу представить, что общее значение изменяется на значение, которое делает условие цикла правильным. На самом деле - я не понимаю, зачем мы входим в цикл.

ответ

4

У вас есть лишняя точка с запятой в конце вашего while. Удалите его, и ваша петля будет работать.

+0

Ничего себе. Даже не видел этого. Это все фиксировало. Благодаря! –

+0

Я тоже этого не видел. Было бы лучше, если бы для/while петли нужны всегда. – Kayaman

+0

Правильная конфигурация IDE может предупредить вас о пустом теле цикла и/или ненужных брекетах. – Tom

Смежные вопросы