Требуется некоторая помощь с Java - PullRequest
1 голос
/ 18 ноября 2009

Использование if для моделирования оператора модуля

Переписать этот метод increment () из класса NumberDisplay () без использования оператора% modulus.

/** Increment the display value by one *  rolling over to zero if the limit is reached  */
public void increment() 
{
   if(value > limit);
   else
   value = (value + 1);
   value = 0;
}

хорошо, я проверил это, я поставил значение = (значение + 1); он выполнил успешно, но ошибка возникла, поскольку опрокидывание было меньше, чем сумма. любая помощь будет отличной!

Ответы [ 7 ]

8 голосов
/ 18 ноября 2009

Вы всегда присваиваете 0 значению, безусловно. У вас также есть пустое выражение «если», что не является хорошим признаком - и его трудно заметить, поскольку вы только что использовали «;» вместо фигурных скобок.

Вот ваш текущий код, переписанный с фигурными скобками:

public void increment() 
{
   if(value > limit)
   {
   }
   else
   {
       value = (value + 1);
   }
   value = 0;
}

Теперь, вместо того, чтобы показывать вам сам код, я дам вам два совета:

  • Как значение может быть строго больше, чем предел?
  • Почему бы вам вообще не захотеть изменить значение, если оно особенно велико? Чем бы вы хотели стать вместо этого?
2 голосов
/ 18 ноября 2009

Не думая с точки зрения синтаксиса кода и тому подобного, попробуйте прочитать то, что вы написали, как если бы это было английское предложение. Это должно дать вам некоторое представление, например ::100100

Если значение больше предела, то ...

1 голос
/ 18 ноября 2009

Подсказка: остерегайтесь точек с запятой в странных местах.

Подсказка 2: попробуйте использовать { и } с вашими блоками if и else, это поможет вам увидеть логику кода.

1 голос
/ 18 ноября 2009

Предлагаю вам прочитать, как правильно написать if заявление .

0 голосов
/ 18 ноября 2009
public void increment()
{
    value++;
    if(value >= limit)
        value = 0;
}
0 голосов
/ 18 ноября 2009

Я не совсем уверен, что именно вы спрашиваете или что вы подразумеваете под "пределом" точно , но я предполагаю (исходя из того, как я ожидаю, что оператор мода будет работать), что, возможно, вы по одному? Возможно "> =" вместо ">" это то, что вы ищете?

0 голосов
/ 18 ноября 2009

Я думаю, вы хотите

public void increment() 
{
   if(value >= limit)
     value = 0;
   else
     value = value + 1;
}

но оно определенно пахнет домашней работой ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...