3

要求

假设现有类 ICalculator 的可用性,该类对整数算术计算器进行建模并包含:

  • 一个实例变量 currentValue ,它存储计算器的当前 int 值,并且可以被任何子类访问和修改。

  • 方法 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

提示:

  • 您可能想使用:<
  • 您确定要使用:=
4

6 回答 6

17

你不需要做任何那些奇怪的计算。试试这个:

public class ICalculator2 extends ICalculator {
    public int negate() { 
        return (currentValue = -currentValue);
    }
}
于 2012-10-26T06:53:38.083 回答
3

为此,您可以操作 ICalculate 类中为您提供的方法之一。请记住,您不能直接使用实例变量 currentValue,因为它是私有变量,子类只能通过方法访问私有变量。在这种情况下,最好的操作方法是 mul(),参数为 -1。

公共整数否定(){

返回 mul(-1); }

于 2013-04-24T20:30:28.637 回答
0

请尝试这将帮助您解决此问题

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

        System.out.println(i);
            return i;
于 2012-10-26T06:55:59.680 回答
0

你得到的数字就是一个例子。如果有一个使用任何其他数字的真值表,那么您的示例将失败。这就是代码出现问题的原因。您需要使用代码来显示当 currentValue 不是 0 时会发生什么。

查看以下内容:

    public class ICalculator2 extends ICalculator {
        public int negate() {
          if (currentValue != 0) {
            return currentValue * -1;}
          else {
            return 0; 
            }
        }
    }
于 2013-02-27T01:57:50.423 回答
0

我刚刚注意到您正在尝试扩展通常应该是接口的内容。那是行不通的。你实现了一个接口。

于 2016-07-08T11:14:49.067 回答
-1

伙计,你把这一切都搞错了。

公共类 ICalculator2 扩展 ICalculator{

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

你看?-22 和 100 是示例,它们无关紧要。关键是你需要否定它是什么。

于 2013-04-02T22:26:40.347 回答