【发布时间】:2012-10-16 10:23:10
【问题描述】:
要求
假设现有类 ICalculator 的可用性,该类对整数算术计算器进行建模并包含:
-
存储当前 int 值的实例变量 currentValue 计算器,并且可以被任何子类访问和修改。
-
方法add、sub、mul和div
ICalculator 中的每个方法都接收一个 int 参数并将其操作应用于 currentValue 并返回 currentValue 的新值。因此,如果 currentValue 的值为 8,并且调用了 sub(6),那么 currentValue 的最终值为 2,并返回 2。
因此,您将基于 ICalculator 编写子类 ICalculator2 的定义。 ICalculator2 类有一个额外的方法,即 negate,它不接收任何参数。 negate 的作用是反转 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
提示:
- 您可能想使用:
- 您确定要使用:=
【问题讨论】:
-
您提到的-22 将被转换为22,但您的代码将22 转换为-22 请确保您的代码和语句正确。
-
为什么不简单地将值乘以
-1 -
是的..你应该简单地将值乘以-1
-
我认为您不应该在代码中硬编码值
22和100。这些只是例子。你应该编写一个通用的negate()方法,它适用于任何数字,而不仅仅是零、22 和 100。 -
我改了代码,还是一样的逻辑错误:⇒ negatedValue 的值不正确。