2016-05-30 4 views
-4

У меня проблема с пониманием этого кодЕсли оператор Путаница для метода

public void changeHealthCoefficient(double delta) 

, который добавляет значение, переданное в параметре дельты с переменным в healthCoefficient экземпляра.

Параметр delta может быть положительным или отрицательным, но если новое значение healthCoefficient будет меньше или равна MINIMUM_HEALTH_COEFFICIENT, в дополнение к изменению значения healthCoefficient, установить переменную isAlive экземпляра к false.

Если новое значение healthCoefficient будет больше MAXIMUM_HEALTH_COEFFICIENT, установите healthCoefficient на MAXIMUM_ HEALTH_COEFFICIENT.

Я сделал

if (newHealthCoefficient <= MINIMUN_HEALTH_COEFFICIENT) 
    newHealthCoefficient = MINIMUN_HEALTH_COEFFICIENT 

Вместо того

newHealthCoefficient >= MAXIMUM_HEALTH_COEFFICIENT 

newHealthCoefficient = MAXIMUM_HEALTH_COEFFICIENT 
+0

Учитывая отсутствие форматирования, я удивлен, что вы можете прочитать его, гораздо меньше понимаете. –

+2

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

+0

Извините, что я новичок в этом форуме и Java, но что будет с моим if-заявлением? Потому что я делаю неправильно – user6394146

ответ

0

Основываясь на том, что вы описали, это кажется, что вы хотите что-то вроде:

public void changeHealthCoefficient(double delta) 
{ 
    // adds the value passed in the delta parameter to the 
    // healthCoefficient instance variable 
    healthCoefficient += delta; 

    // if the new value of healthCoefficient would be less than or equal 
    // to MINIMUM_HEALTH_COEFFICIENT , in addition to changing the value of 
    // healthCoefficient, set the isAlive instance variable to false. 
    if (healthCoefficient <= MINIMUN_HEALTH_COEFFICIENT) 
    { 
     isAlive = false; 
    } 

    // if the new value of healthCoefficient would be greater than 
    // MAXIMUM_HEALTH_COEFFICIENT, set healthCoefficient to 
    // MAXIMUM_HEALTH_COEFFICIENT. 
    if (healthCoefficient > MAXIMUM_HEALTH_COEFFICIENT) 
    { 
     healthCoefficient = MAXIMUM_HEALTH_COEFFICIENT; 
    } 
} 
+0

Когда я использую newHealthCoefficient, он говорит, что переменная не найдена, но в моем конструкторе по умолчанию у меня есть общедоступный Guppy (double newHealthCoefficient) – user6394146

+0

Я случайно использовал его как newHealthCoefficient в 1-ом утверждении if. Я обновил свой ответ, чтобы иметь его как здоровье. –

0

Простой способ для обеспечения минимальные или максимальные значения - использовать методы Math.min и Math.max.

Например:

healthCoefficient = Math.Min(healthCoefficient, MAXIMUM_HEALTH_COEFFICIENT); 

устанавливает значение меньше текущего значения и константы.

Я бы предположил, исходя из вашего вопроса, что ваше значение коэффициента здоровья должно быть в своем классе. Очень длинные имена переменных могут быть признаком того, что вы пытаетесь отличить переменные от несвязанных в неродственном классе.

Таким образом, ее возможно, что ваш код будет понятнее, что-то вроде:

class HealthCoefficient { 
    private static final double MAX = 100.0; 
    private static final double MIN = 30.0; 
    private double value; 

    public void change(double delta) { 
     value += delta; 
     value = Math.min(value, MAX); 
     value = Math.max(value, MIN); 
    } 

    public boolean isAlive() { 
     return value > MIN; 
    } 
} 
Смежные вопросы