小编Dem*_*nth的帖子

使用可比较的比较不同的变量

我熟悉使用Comparable接口的标准比较,虽然今天我想要比较几个不同的变量时遇到一些麻烦.

我基本上想要实现一个compareTo方法,只有在以下if语句为真时才产生结果-1:

if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ)
Run Code Online (Sandbox Code Playgroud)

虽然,我不确定这是否可能使用类似的,或者我只是不像它看起来那么熟悉.因为当我尝试这种方法时

public int compareTo(IsoSprite o) {
    if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ){
        return -1;
    }else if(o.maxX < minX && o.maxY < minY && o.minZ > maxZ){
        return 1;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到错误"比较方法违反了其总合同!" .我想澄清一点,我不需要帮助理解这个错误意味着什么,因为我已经阅读了几个关于它的问题.虽然,我仍然不能把我的想法放在这个特定的问题上,因为我读过的其他问题的解决方案是微不足道的.

我真的很感激这种比较的一些帮助,它将是一个救生员.任何输入也很受欢迎.

编辑:经过测试后,我得到的东西几乎可以工作(并非在所有情况下),但我无法弄清楚原因:

public int compareTo(IsoSprite o) {
    if (o.maxX > minX && o.maxY > minY && o.minZ < maxZ) {
        return -1;
    } …
Run Code Online (Sandbox Code Playgroud)

java comparison comparable comparator libgdx

5
推荐指数
1
解决办法
82
查看次数

标签 统计

comparable ×1

comparator ×1

comparison ×1

java ×1

libgdx ×1