You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何解决Point类与double类型不兼容的使用问题

问题原因

你用到的java.awt.Point类默认只支持int类型的坐标参数,构造方法没有提供接收double类型参数的重载,直接传入double值就会触发类型不兼容的报错。


可行解决方案

方案1:不需要保留浮点精度时,强制转换double为int

如果业务场景允许坐标取整,可以在构造Point时对x、y做强制类型转换,修改构造方法代码即可:

public Stad(String namn, int antal, double x, double y){
    this.namn = namn;
    this.antal = antal;
    // 四舍五入强转double为int,减少精度损失
    Point xy = new Point((int)Math.round(x), (int)Math.round(y));
    this.koordinater = xy;
}

方案2:需要保留浮点精度时,替换Point为支持double的坐标类

直接改用java.awt.geom.Point2D.Double类,它原生支持double类型坐标存储,改动后的完整代码示例:

package Stad;

import java.awt.geom.Point2D;

public class Stad {

    private String namn;
    private int antal;
    // 替换Point为支持double的Point2D.Double
    private Point2D.Double koordinater;

    public Stad(String namn, int antal, double x, double y){
        this.namn = namn;
        this.antal = antal;
        // 直接传入double参数构造实例
        Point2D.Double xy = new Point2D.Double(x, y);
        this.koordinater = xy;
    }
    public String getNamn(){
        return namn;
    }

    public int getAntal(){
        return antal;
    }
    public Point2D.Double getKoordinater(){
        return koordinater;
    }

    public String getInfo(){
        String info = "Stad: " + this.getNamn()
                + "\nAntal invånare: " + this.getAntal()
               + "\nKoordinater: X=" + koordinater.getX() + " Y=" + koordinater.getY();
        return info;
    }

}

方案3:自定义坐标类

如果不想依赖awt包下的类,也可以自己实现一个简单的坐标类,单独存储double类型的x、y值,按需实现对应的get、toString方法即可。


内容的提问来源于stack exchange,提问作者Isabelle Kokkalis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:06:02