【问题标题】:int reverse sign negate( ) javaint 反向符号 negate() java
【发布时间】: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
  • 我认为您不应该在代码中硬编码值 22100。这些只是例子。你应该编写一个通用的negate() 方法,它适用于任何数字,而不仅仅是零、22 和 100。
  • 我改了代码,还是一样的逻辑错误:⇒ negatedValue 的值不正确。

标签: java methods logic negate


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    public int negate(){

    返回 mul(-1); }

    【讨论】:

      【解决方案3】:

      老兄,你搞错了。

      公共类 ICalculator2 扩展 ICalculator{

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

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

      【讨论】:

        【解决方案4】:

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

        查看以下内容:

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

        【讨论】:

          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

            请试试这个会帮助你解决这个问题

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

            【讨论】:

            • 如果i 是肯定的,它仍然需要被否定,你不需要if 或乘法来做到这一点。答案错误。
            • 所以你已经解决了我提到的 50% 的问题。你读过其他答案吗?
            猜你喜欢
            • 1970-01-01
            • 2011-07-24
            • 2013-05-12
            • 2011-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-11-06
            • 2013-03-11
            相关资源
            最近更新 更多