int обратный знак negate() java

Требования

Предположим, что существует класс ICalculator, который моделирует целочисленный арифметический калькулятор и содержит:

  • переменная экземпляра currentValue, которая хранит текущее значение int калькулятора и может быть доступна и изменена любым подклассом.

  • методы add, sub, mul и div

    Каждый метод в ICalculator получает аргумент int и применяет свою операцию к currentValue и возвращает новое значение currentValue. Таким образом, если currentValue имеет значение 8 и вызывается sub(6), то currentValue заканчивается значением 2, и возвращается 2.

Итак, вы должны написать определение подкласса ICalculator2, основанное на ICalculator. Класс ICalculator2 имеет еще один дополнительный метод отрицания, который не получает аргументов. Эффект отрицания заключается в изменении знака currentValue. Например, если currentValue равно нулю, изменений нет, если это -22, то становится 22, если это 100, то становится -100. Кроме того, negate возвращает новое значение currentValue.

Исходный код

public class ICalculator2 extends ICalculator {
public int negate() { 
int val = add(0);      
if (val == -22) return val * -1;   
else if (val == 100) return val * -1;   
else return 0;}}

Примечания:

  • Ваш код имел ошибку во время выполнения

Больше подсказок:

  • Возможно, вы захотите использовать номер, отличный от 100

  • Возможно, вы захотите использовать номер, отличный от 22

  • Вы уверены, что хотите использовать: val

подсказки:

  • Вы можете использовать: <
  • Вы уверены, что хотите использовать: =

6 ответов

Решение

Вам не нужно было делать какие-либо из этих странных вычислений. Попробуйте это вместо этого:

public class ICalculator2 extends ICalculator {
    public int negate() { 
        return (currentValue = -currentValue);
    }
}

Вы делаете это, манипулируя одним из методов, предусмотренных для вас в классе ICalculate. Помните, что вы не можете использовать переменную экземпляра currentValue напрямую, потому что это частная переменная, и у подкласса будет доступ к закрытым переменным только через методы. В этом случае лучше всего манипулировать методом mul() с аргументом -1.

public int negate () {

вернуть mul(-1); }

Я только что заметил, что вы пытаетесь расширить то, что обычно должно быть интерфейсом. Это не сработает. Вы реализуете интерфейс.

Пожалуйста, попробуйте это поможет вам решить эту проблему

        int i = -22;
        i = i*-1;

        System.out.println(i);
            return i;

Чувак, ты все неправильно понял.

открытый класс ICalculator2 расширяет ICalculator{

public int negate(){
    int val =mul(-1);
    return val;}}

ты видишь? -22 и 100 являются примерами, они не имеют значения. Дело в том, что вам нужно отрицать, что бы это ни было.

Числа, которые вам дали, были примером. Если бы была таблица истинности с использованием любых других чисел, ваш пример потерпел бы неудачу. Вот почему была проблема с кодом. Вам нужно использовать код, который показывает, что происходит, когда currentValue НЕ 0.

Проверьте следующее:

    public class ICalculator2 extends ICalculator {
        public int negate() {
          if (currentValue != 0) {
            return currentValue * -1;}
          else {
            return 0; 
            }
        }
    }
Другие вопросы по тегам