错误:(83,42)java:不兼容的类型:可能从浮点到int的有损转换
在尝试绘制图形时,我得到以下错误,我的x和y是浮点类型错误:(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
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浮动,但绘图线接受整数而不是浮动