[英]Possible lossy conversion from double to int?
这是我尝试编译代码时收到的消息。 究竟是什么意思,我该如何解决这个问题?
practice.java:13: error: incompatible types: possible lossy conversion from double to int
pattern(t, length);
^
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error
这是我的代码:
public static void main(String[] args){
Turtle t = new Turtle();
t.delay(30);
pattern2(t, 50.0, 3);
}
public static void pattern2(Turtle t, double length, int level){
double random = Math.random();
if (level == 0){
pattern(t, length);
} else{
t.color(150/level, 150/level, 150/level);
pattern2(t, length, level -1);
t.penup();
t.backward(length*4.5);
t.left(60);
t.forward(length);
t.right(60);
t.backward(length/random);
t.pendown();
pattern2(t, length/random, level-1);
}
}
public static void pattern(Turtle t, int length){
for (int i = 0; i < 5; i++) {
triangle(t, length);
t.forward(length);
}
}
public static void triangle(Turtle t, int length){
for (int i = 0; i < 3; i++) {
t.forward(length);
t.left(120);
}
}
当你调用pattern(t, length);
时,消息会显示pattern(t, length);
在第13行,当它需要一个int长度时,你传递一个双倍的长度。 如果您将模式和三角形方法更改为采用双倍长度而不是int长度,则会修复错误。
编辑以显式解释错误您的方法采用一个int,它只能容纳最多2^32 - 1
。 双精度值可以保持最大值~ 1.7*10^308
(请参阅Double类中的MAX_VALUE常量以获得更精确的限制)。 这意味着double可能具有值(精度),如果将其用作int,则会丢失。
pattern2()中的长度参数是double。 但是,在pattern()中,length是int。 Java不会自动从double转换为int。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.