【问题标题】:Why did I get a "bad operand types for binary operator" error?为什么会出现“二元运算符的操作数类型错误”错误?
【发布时间】:2013-08-07 21:08:53
【问题描述】:

我正在做一个将一种方法与另一种方法结合起来的练习。我知道getMinMax() 方法有一个空数组,但这与练习的目的无关。

代码:

public class Square{
    int area;

    public Square[] getMinMax(Square[][] arr){
        Square[] list = new Square[2];
        return list;
    }

    public int getArea(){
        return area;
    }

    public boolean isDifferenceSignificant(Square[][] arr){
        boolean isit = false;
        Square [] result = getMinMax (arr);
        if((result[1] - result[0])< 0.5) //The line (16) in question
            isit = true;
        return isit;
    }
}

编译时出现以下错误:

Square.java:16: error: bad operand types for binary operator '-'
        if((result[1] - result[0])< 0.5)
                      ^
  first type:  Square
  second type: Square
1 error

我只是迷路了,想知道为什么会发生这个错误。

编辑:Rohit Jain 说“你可能是说 - result[1].getArea() - result[0].getArea()

并且 Lochemage 说“if((result[1].getArea() - result[0].getArea())

这两种方法都可以,感谢您的宝贵时间!

【问题讨论】:

  • 你的意思可能是-result[1].getArea() - result[0].getArea()
  • @Heuster。 OP 在第一行写了无关紧要的内容。所以,可能他没有返回一个空数组。
  • @Rohit 哎呀,错过了那一行 :) 在您发表评论前一秒钟看到它
  • @RohitJain OP 实际上声明 getMinMax 定义无关紧要,而不是 getArea
  • @Lochemage。是的,这就是我所说的。正如目前的情况,这就是可以抛出 NPE 的原因。

标签: java arrays if-statement methods


【解决方案1】:

我假设您实际上想要测试每个 Squarearea 变量?

if((result[1].getArea() - result[0].getArea())< 0.5)

通过执行result[1] - result[0],您正在调用Square 类中的二进制减法运算符,该类可能未定义。

【讨论】:

    【解决方案2】:

    Java 没有像 C++ 那样的运算符重载,而且你不能从另一个对象中减去一个对象。使用实际值 (result[1].getArea())。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2016-06-24
      相关资源
      最近更新 更多