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;
}
}
}