2017-05-27 5 views
-1

を使用します。最初フォースJavaは、私は次のコードを持って、二重の代わりに、int型

public void keyboard() { 
    int sealX; 
    double sealY; 
    if (Greenfoot.isKeyDown("up")) { 
     sealX = getX(); 
     sealY = getY(); 
     setLocation(sealX, (sealY - 1.25)); 
    } 
    if (Greenfoot.isKeyDown("down")) { 
     sealX = getX(); 
     sealY = getY(); 
     setLocation(sealX, (sealY + 1.25)); 
    } 
} 

を、変数シーリーはsealXのように、整数でした。しかし、1は、以下の2つの条件式でインクリメントされるほど小さすぎて、2が大きすぎます。

これまでにプログラムをコンパイルして正常に動作しました。しかし、私はsealYをdoubleに変更し、キーボード入力で行われた操作を小数点以下の数値に変更すると、Javaはエラーをスローし始めました。 - 互換性のない型:doubleからintへの可逆変換

I '私が不必要に倍精度を使用していた時にこれを見たことがあります。しかし、ここではそうではありません。整数では不十分です。私はこれが致命的なエラーではなく、より多くのヒントですが、私のプログラムはそのためにコンパイルされません。

個人的には、コンパイラが役立つようにすることができますが、それ以外の場合は、私がdouble型かint型どちらを使用するかは関係ありません。特に私がここで何をしようとしているかのために整数を使うことができないので、私が二重使用を主張するならば、コンパイラをオーバーライドする方法があるはずです。

キャスティングでこの問題が解決されるとは思いません。コンパイラを手動でオーバーライドして、自分が何をやっているのか分かっていることを宣言し、sealYを2倍にしたいのですか?

EDIT: enter image description here

そして、いくつかのドキュメント:

のsetLocation 公共ボイドのsetLocation(int型のx、int型のy)の はこの俳優のための新しい場所を割り当てます。これにより、アクタが指定された場所に移動します。位置は、世界のセルの座標として指定されます。 このメソッドをオーバーライドする場合は、オーバーライドするメソッドからこのメソッドを "super.setLocation(x、y)"として呼び出して、無限再帰を避けることが重要です。 パラメータ: は、x - x軸 Y上の位置インデックス - 関連項目y軸上の位置インデックス: 移動(intは)

+0

'getX()'を投稿してください。*私はコンパイラが役立つようにすることができると思うが、それ以外の場合は、私がdoubleかintを使うかどうかは関係ありません。*コードのコンパイルは**コンパイラのみのビジネスです。 –

+0

どちらの行にエラーがありますか?あるいは、あなたが最小限の自己完結型プログラムでやろうとしていることを再現することができますか? – Joni

+0

@ Joni残念ながら私はそれほど心配していません。エラーは両方ともsetLocationステートメントの行にあります – InterLinked

答えて

0

鋳造が同様にあなたの問題を解決することはできません あなたがする必要があります使用:のgetY()はintを返し

sealY = getY().doubleValue(); 

場合に使用する必要があります

sealY = new Integer(getY()).doubleValue(); 

EDIT:

あなたのsetLocation関数はsetLocation(int x、int y)のように見えます。

これだけ行うことができます。このエラーを回避するには:

setLocation(sealX, new Double(y + 1.25).intValue()); 

をかRadiodefと言っ

setLocation(sealX, (int) (y + 1.25)); 

それは汚いトリックのように見えますが、私は他のソリューション

のことは知りません
+0

それは私にエラー "intはdereferenedすることはできません"を与えます。今は実際には2の代わりに3つのエラーがありますが、最初は正常に動作したようですが、 – InterLinked

+0

getX()はintまたはIntegerを返しますか? –

+0

getX()は整数を返します。なぜなら、それを使用する方法であり、問​​題はないと思います。明らかにするには、getY()をintにする必要がありますが、getY()はdoubleである必要があります – InterLinked

関連する問題