要求
假设现有类ICalculator的可用性,它为整数算术计算器建模并包含:
存储当前int值的实例变量currentValue 计算器,可以被任何子类访问和修改。
方法add,sub,mul和div
ICalculator中的每个方法都接收一个int参数,并将其操作应用于currentValue并返回currentValue的新值。因此,如果currentValue的值为8且调用了sub(6),则currentValue以值2结束,并返回2。
因此,您要编写基于ICalculator的子类ICalculator2的定义。 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
提示:
答案 0 :(得分:12)
你不需要做任何奇怪的计算。试试这个:
public class ICalculator2 extends ICalculator {
public int negate() {
return (currentValue = -currentValue);
}
}
答案 1 :(得分:2)
您可以通过操作ICalculate类中为您提供的方法来完成此操作。请记住,您不能直接使用实例变量currentValue,因为它是私有变量,并且子类只能通过方法访问私有变量。在这种情况下,最好的操作方法是mul(),参数为-1。
public int negate(){
return mul(-1); }
答案 2 :(得分:0)
请尝试这样可以帮助您解决此问题
int i = -22;
i = i*-1;
System.out.println(i);
return i;
答案 3 :(得分:0)
您获得的数字就是一个例子。如果有使用任何其他数字的真值表,您的示例将失败。这就是代码存在问题的原因。 您需要使用代码来显示当currentValue不为0时会发生什么。
查看以下内容:
public class ICalculator2 extends ICalculator {
public int negate() {
if (currentValue != 0) {
return currentValue * -1;}
else {
return 0;
}
}
}
答案 4 :(得分:0)
我刚刚注意到您正在尝试扩展常规作为接口的内容。那不行。您实施接口。
答案 5 :(得分:-1)
老兄,你错了。
公共类ICalculator2扩展了ICalculator {
public int negate(){
int val =mul(-1);
return val;}}
你知道吗? -22和100是例子,它们并不重要。关键在于你需要否定它是什么。