在尝试绘制图形时,我得到了下面的错误,我的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
g.抽屉线
方法采用四个整数。从错误中可以明显看出,城市的
getX
和 getY
方法返回浮点数
。
您需要以某种一致的方式将这些浮点数
转换为 int
s,具体取决于这些浮点数
中的值的范围。如果范围与 drawLine
的预期范围匹配,则可以将它们转换为 int
:
g.drawLine((int)a.getX(), (int)a.getY(), (int)b.getX(), (int)b.getY());
例如,如果数字不能很好地转换,因为getX
和getY
return numbers in the range-100..100,并且您想在800 x 600画布上绘制它们,那么可以添加用于缩放和/或将
转换为
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()));
Java不允许您将浮点数
s分配给int
s,因为正如错误消息所述,您可能会丢失那里的数据(小数点后的所有内容)。如果您不能将x
和y
值更改为int
s(这是最有意义的),您可以通过将浮点数
s显式转换为int
s来克服此错误,表示潜在的数据丢失是故意的,并且您愿意拥有它:
g.drawLine((int) a.getX(), (int) a.getY(), (int) b.getX(), (int) b.getY());
// Here ---^---------------^---------------^---------------^
这是我的代码。我想显示月份的名称而不是数字。但是我的代码中有一个错误。 它说“不兼容的类型:可能的有损转换从长到整数”。我的代码中的错误是:-
我试图为学校编写一些东西,但我不断收到这个编译错误: 错误:不兼容的类型:从int到byte的转换可能有损失 A = (字节)C / (字节)B;
为什么当我尝试编译以下代码时会收到此错误消息? 或 不兼容的类型:从double到float的可能有损转换 我溢出来了吗?我想了解这背后的理论。提前感谢。
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!
我是Java的初学者,我已经编写了这段代码。当我尝试运行它时,它不断显示错误,例如: < li >错误:不兼容的类型:从double到int的转换可能有损耗 < li >错误:找不到符号 有人能解释一下我作为一个初学者应该如何解决这个问题吗。 太谢谢你了!