2017-04-05 14 views
1

これは私のコードをコンパイルしようとすると私が得るメッセージです。正確にはどういう意味ですか、これをどのように修正できますか?あなたはそれがint型の長さを期待するとき、あなたはそれを倍の長さを渡している13行でpattern(t, length);を呼び出すときdoubleからintへの可逆変換が可能ですか?

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); 
    } 
} 

答えて

3

メッセージは言う:

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 

は、ここに私のコードです。 int型の長さではなく、double型の長さを取るようにパターンと三角形のメソッドを変更すると、エラーが修正されます。

編集が明示的に あなたの方法だけ2^32 - 1までの値を保持することができますint型を取るエラーを説明します。ダブルスは〜1.7*10^308までの値を保持できます(正確な制限については、DoubleクラスのMAX_VALUE定数を参照)。これは、doubleがintとして使用された場合に失われる可能性のある値(精度)を潜在的に持つ可能性があることを意味します。

0

doubleの最大値は、最大int値よりもはるかに大きくなります。最大int値より大きいdouble値は、intにshoehornされたときに切り捨てられます。これは、不可逆変換が意味することです。整数として保存された値は、変換された値のすべてに余裕がない場合、元の値のように見えなくなる可能性があります。

コンパイラはあなたのプログラムの流れをまったく見ません。値を渡す唯一の場所がリテラル50.0であることを確認してから「ああ、そうです。コンパイラはすべて型を調べます。

この場合、最も簡単な解決策は、doubleの代わりにintリテラルを使用することです。三角法はintを期待しているので、それを与えてください。

intが必要なメソッドにdouble値を渡す必要がある場合は、キャストを追加して、コンパイラに不平を示さないように指示できます。

0

pattern2()のlengthパラメータはdoubleです。しかし、pattern()では、lengthはintです。 Javaは自動的にdoubleからintに変換されません。

関連する問題