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

时间:2017-06-24 11:09:50

标签: java

在尝试绘制图形时我得到下面的错误,我的x和y是FLoat类型。

 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

2 个答案:

答案 0 :(得分:0)

Java不允许您将showPrompt(message,offer,getcode) { this.peopleservice.getCoupun(offer,getcode).subscribe(data=> this.Code=data); let prompt = this.alertCtrl.create({ title: 'code', message: message, inputs: [{ name: 'Code', placeholder: 'code', }], buttons: [{ text: 'Cancel', handler: data => { console.log('Cancel clicked'); } },{ text: 'ok', handler: data => { this.Coupun(); } } Coupun(){ let prompt = this.alertCtrl.create({ title: ' code ', message:"the result for the getCoupun request", buttons:[{ text: 'Cancel', handler: data => { console.log('Cancel'); } }] }); prompt.present(); } 分配给float,因为,正如错误消息所述,您可能会丢失数据(小数点后的所有内容)。如果您无法将intx值更改为y s(其中,最合适的话),您可以通过明确<来克服此错误/ strong>将int转换为float s,表示潜在的数据丢失是故意的,并且您愿意拥有它:

int

答案 1 :(得分:0)

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

您需要以一致的方式将这些getY转换为float,具体取决于这些float中值的范围。如果范围与int预期的范围匹配,则可以将它们转换为float

drawLine

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

float