2017-06-24 21 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

のために、スケーリングおよび/またはintfloatを変換するための方法を追加したいです –

答えて

0

エラーメッセージの状態として、あなたがそこにデータを失う可能性があり、以来、Javaは、あなたがint秒にfloat秒を割り当てることができなくなります(小数点以下のすべてにポイント)。あなたは(手オフ、最も理にかなって、)int秒にごxy値を変更することができない場合は、データ損失の可能性がある意味、int秒にごfloat秒のキャスト明示的によって、このエラーを克服することができます意図的で、あなたはそれを持っています:

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

g.drawLine(...)メソッドは4つの整数をとります。 CitygetXおよびgetYメソッドがfloatを返すというエラーから明らかです。

floatをの値の範囲に応じて一定の方法でintに変換する必要があります。範囲はdrawLineによって予想と一致した場合は、intにそれらをキャストすることができます:

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

番号がうまく変換されない場合は、例えば、範囲-100..100でgetXgetYリターン番号ので、とあなたは、800×600のキャンバス上に描画する例

XとYフロートが、drawLineは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())); 
関連する問題