2017-06-24 41 views
1

圖形我得到下面的錯誤,我的x和y是FLoat類型。錯誤:(83,42)java:不兼容的類型:從float到int的可能的有損轉換

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 
+0

看來,X和Y浮動,但接受的drawLine整數不會浮 –

回答

0

的Java不會讓你指定float s到int S,因爲,作爲錯誤消息狀態,您可以在小數點後丟失數據有(一切點)。如果你不能改變你的xyint S(其中,斷手,將最有意義),您可以通過明確克服這種錯誤是您鑄造float s到int S,標誌着潛在數據丟失故意的,你願意擁有它:

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

g.drawLine(...)方法需要四個整數。從錯誤中明顯可見,CitygetXgetY方法返回float

您需要以某種一致的方式將這些float s轉換爲int s,具體取決於這些float s中值的範圍。如果範圍的預期drawLine匹配,你可以將它們轉換成int

g.drawLine((int)a.getX(), (int)a.getY(), (int)b.getX(), (int)b.getY()); 

如果數字並不好解釋,例如,因爲在範圍-100..100 getXgetY回報數字,要吸引他們的800 * 600的畫布上,添加方法用於縮放和/或轉換floatint,例如

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())); 
相關問題