int反向符号否定()java

int反向符号否定()java,java,methods,logic,negate,Java,Methods,Logic,Negate,要求 假设现有类ICalculator可用,该类为整数算术计算器建模,并包含: 存储当前int值的实例变量currentValue 并且可以被任何子类访问和修改 方法add、sub、mul和div ICalculator中的每个方法接收一个int参数,并将其操作应用于currentValue,并返回currentValue的新值。因此,如果currentValue的值为8,并且调用了sub(6),那么currentValue将以值2结束,并返回2 因此,您需要基于ICalculator编

要求

假设现有类ICalculator可用,该类为整数算术计算器建模,并包含:

  • 存储当前int值的实例变量currentValue 并且可以被任何子类访问和修改

  • 方法add、sub、mul和div

    ICalculator中的每个方法接收一个int参数,并将其操作应用于currentValue,并返回currentValue的新值。因此,如果currentValue的值为8,并且调用了sub(6),那么currentValue将以值2结束,并返回2

因此,您需要基于ICalculator编写子类ICalculator 2的定义。类ICalculator2还有一个不接收参数的附加方法negate。否定的作用是将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吗

提示:


  • 您可能想使用:您不需要进行任何奇怪的计算。请尝试以下方法:

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

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

            int i = -22;
            i = i*-1;
    
            System.out.println(i);
                return i;
    

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

    请查看以下内容:

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

    老兄,你完全搞错了

    公共类ICalculator 2扩展了ICalculator{

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

    您知道吗?-22和100是示例,它们无关紧要。重点是您需要否定它是什么。

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

    公共int否定(){

    返回mul(-1);
    }

    我刚刚注意到,您正在尝试扩展传统上应该是接口的内容。这行不通。您实现了一个接口。

    您提到的-22将转换为22,但您的代码显示为-22。请确保您的代码和语句正确无误。w你为什么不简单地用
    -1
    乘以值呢?是的。你应该简单地用-1乘以值。我认为你不应该硬编码代码中的值
    22
    100
    。这些只是示例。你应该写一个一般的
    否定()
    方法,该方法适用于任何数字,而不仅仅是0、22和100。我将其更改为代码,但仍然存在相同的逻辑错误:⇒ NegativedValue的值不正确。如果
    i
    为正,则仍需要求反,并且不需要使用
    If
    或乘法。答案错误。因此,我提到的问题中,您已经解决了50%。您是否阅读了其他答案?