刘虾 2022-11-18 10:31 采纳率: 85.7%
浏览 15
已结题

JAVA8怎么把有微小偏差坐标分组为相同位置

JAVA8怎么实现把有微小偏差坐标分组为相同位置?坐标X和Y都是0.05的偏差就认为多个NPC重叠
[{NPC=强盗, X=0.45, y=0.1}, {NPC=宝箱, X=0.5, y=0.15}

  • 写回答

1条回答 默认 最新

  • nssnail 2022-11-18 10:54
    关注
    
    public class Test6 {
        //偏移量x
        private static final double OFFSET_X = 0.05;
        //偏移量y
        private static final double OFFSET_Y = 0.05;
    
        public static void main(String[] args) {
            NPC npc1=new NPC("海盗",0.45,0.1);
            NPC npc2=new NPC("宝箱",0.5,0.15);
            if(compareTo(npc1,npc2)){
                System.out.println(npc1.getName()+"和"+npc2.getName()+"处在相同的位置");
            }else {
                System.out.println(npc1.getName()+"和"+npc2.getName()+"处在不同的位置");
            }
        }
    
    
        private static boolean compareTo(NPC npc1,NPC npc2){
            //精度计算要换成bigDecimal
            BigDecimal x1 = BigDecimal.valueOf(npc1.getX());
            BigDecimal y1 =BigDecimal.valueOf(npc1.getY());
            BigDecimal x2 =BigDecimal.valueOf(npc2.getX());
            BigDecimal y2 =BigDecimal.valueOf(npc2.getY());
    
            if (!(Math.abs(x1.subtract(x2).doubleValue())==OFFSET_X)) {
                return false;
            }
            if (!(Math.abs(y1.subtract(y2).doubleValue())==OFFSET_Y)) {
                return false;
            }
            return true;
        }
    
        private static class NPC{
            private String name;
            private double x;
            private double y;
    
            public NPC(String name, double x, double y) {
                this.name = name;
                this.x = x;
                this.y = y;
            }
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public double getX() {
                return x;
            }
    
            public void setX(float x) {
                this.x = x;
            }
    
            public double getY() {
                return y;
            }
    
            public void setY(float y) {
                this.y = y;
            }
        }
    }
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月29日
  • 专家已采纳回答 1月21日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来