错误:(83,42)java:不兼容的类型:可能从浮点到int的有损转换

错误:(83,42)java:不兼容的类型:可能从浮点到int的有损转换,java,Java,在尝试绘制图形时,我得到以下错误,我的x和y是浮点类型 public void paint(Graphics g){ for (int x = 0; x < lols.toArray().length-1; x++) { City a = lols.get(x); City b = lols.get(x +1); g.setColor(Color.BLACK); g.drawLine(a.get

在尝试绘制图形时,我得到以下错误,我的x和y是浮点类型

 public void paint(Graphics g){
       for (int x = 0; x < lols.toArray().length-1; x++) {
          City a = lols.get(x);
          City b = lols.get(x +1);
          g.setColor(Color.BLACK);
          g.drawLine(a.getX(), a.getY(), b.getX(), b.getY());

       }

Java不允许您将
float
s分配给
int
s,因为正如错误消息所述,您可能会丢失那里的数据(小数点后的所有数据)。如果您无法将
x
y
值更改为
int
s(这在短期内最有意义),您可以通过显式地
float
s转换为
int
s来克服此错误,表明潜在的数据丢失是有意的,并且您愿意:

g.drawLine((int) a.getX(), (int) a.getY(), (int) b.getX(), (int) b.getY());
// Here ---^---------------^---------------^---------------^

Java不允许您将
float
s分配给
int
s,因为正如错误消息所述,您可能会丢失那里的数据(小数点后的所有数据)。如果您无法将
x
y
值更改为
int
s(这在短期内最有意义),您可以通过显式地
float
s转换为
int
s来克服此错误,表明潜在的数据丢失是有意的,并且您愿意:

g.drawLine((int) a.getX(), (int) a.getY(), (int) b.getX(), (int) b.getY());
// Here ---^---------------^---------------^---------------^
g.drawLine(…)
方法需要四个整数。从错误中可以明显看出,
City
getX
getY
方法返回
float

您需要以某种一致的方式将这些
float
s转换为
int
s,具体取决于这些
float
s中的值的范围。如果范围与
drawLine
所期望的范围相匹配,则可以将其强制转换为
int

g.drawLine((int)a.getX(), (int)a.getY(), (int)b.getX(), (int)b.getY());
例如,如果数字转换不好,因为
getX
getY
返回范围为-100..100的数字,并且您希望在800 x 600的画布上绘制它们,请添加缩放方法和/或将
float
转换为
int

private static int translateX(float x) {
    // converting from range -100..100 to 0..800
    return (int)(4*(x+100));
}
...
g.drawLine(translateX(a.getX()), translateY(a.getY()), translateX(b.getX()), translateX(b.getY()));
g.drawLine(…)
方法需要四个整数。从错误中可以明显看出,
City
getX
getY
方法返回
float

您需要以某种一致的方式将这些
float
s转换为
int
s,具体取决于这些
float
s中的值的范围。如果范围与
drawLine
所期望的范围相匹配,则可以将其强制转换为
int

g.drawLine((int)a.getX(), (int)a.getY(), (int)b.getX(), (int)b.getY());
例如,如果数字转换不好,因为
getX
getY
返回范围为-100..100的数字,并且您希望在800 x 600的画布上绘制它们,请添加缩放方法和/或将
float
转换为
int

private static int translateX(float x) {
    // converting from range -100..100 to 0..800
    return (int)(4*(x+100));
}
...
g.drawLine(translateX(a.getX()), translateY(a.getY()), translateX(b.getX()), translateX(b.getY()));

似乎X和Y浮动,但绘图线接受整数而不是浮动似乎X和Y浮动,但绘图线接受整数而不是浮动