int обратный знак отрицание() 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. Кроме того, отрицание возвращает новое значение 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

Советы:

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

person edmejia    schedule 26.10.2012    source источник
comment
вы упомянули, что -22 будет преобразовано в 22, но ваш код говорит от 22 до -22, пожалуйста, убедитесь, что ваш код и утверждения верны.   -  person sunleo    schedule 26.10.2012
comment
почему бы вам просто не умножить значение на -1   -  person rbhawsar    schedule 26.10.2012
comment
да..вы должны просто умножить значение на -1   -  person Sumit Desai    schedule 26.10.2012
comment
Я не думаю, что вы должны жестко кодировать значения 22 и 100 в своем коде. Это были просто примеры. Вы должны написать общий метод negate(), который работает с любым числом, а не только с нулем, 22 и 100.   -  person Jim Garrison    schedule 26.10.2012
comment
Я изменил код вокруг той же логической ошибки: ⇒ Значение negatedValue неверно.   -  person edmejia    schedule 26.10.2012
comment
почему вы добавляете 0 к значению? в чем смысл?   -  person RGO    schedule 26.10.2012
comment
вы хотите изменить целое число с отрицательным знаком на положительное целое, я прав?   -  person sunleo    schedule 26.10.2012
comment
@sunleo Неправильно, и вопрос уже совершенно ясен.   -  person user207421    schedule 26.10.2012


Ответы (6)


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

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

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

общественное целое отрицание () {

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

person Abdulfatah Ahmad Irro Jr.    schedule 24.04.2013

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

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

        System.out.println(i);
            return i;
person sunleo    schedule 26.10.2012
comment
Если i положителен, его все равно нужно инвертировать, и для этого вам не нужны ни if, ни умножение. Неправильный ответ. - person user207421; 26.10.2012
comment
Итак, вы решили 50% проблем, которые я упомянул. Вы читали другие ответы? - person user207421; 26.10.2012

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

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

    public class ICalculator2 extends ICalculator {
        public int negate() {
          if (currentValue != 0) {
            return currentValue * -1;}
          else {
            return 0; 
            }
        }
    }
person user2113586    schedule 27.02.2013

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

person Mark    schedule 08.07.2016

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

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

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

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

person user2135070    schedule 02.04.2013