为什么我得到“二元运算符的错误操作数类型”错误?

时间:2013-08-07 21:08:53

标签: java arrays if-statement methods

我正在进行一项将一种方法与另一种方法结合起来的练习。我知道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())&lt; 0.5)”

这两个都有效,谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

我认为您确实想要测试每个area的{​​{1}}变量?

Square

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

答案 1 :(得分:1)

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