尝试绘制图形时,我在下面得到错误,我的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());
}
我遇到的错误:
Error:(83, 42) java: incompatible types: possible lossy conversion from float to int
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()));