を使用します。最初フォース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倍にしたいのですか?
そして、いくつかのドキュメント:
のsetLocation 公共ボイドのsetLocation(int型のx、int型のy)の はこの俳優のための新しい場所を割り当てます。これにより、アクタが指定された場所に移動します。位置は、世界のセルの座標として指定されます。 このメソッドをオーバーライドする場合は、オーバーライドするメソッドからこのメソッドを "super.setLocation(x、y)"として呼び出して、無限再帰を避けることが重要です。 パラメータ: は、x - x軸 Y上の位置インデックス - 関連項目y軸上の位置インデックス: 移動(intは)
'getX()'を投稿してください。*私はコンパイラが役立つようにすることができると思うが、それ以外の場合は、私がdoubleかintを使うかどうかは関係ありません。*コードのコンパイルは**コンパイラのみのビジネスです。 –
どちらの行にエラーがありますか?あるいは、あなたが最小限の自己完結型プログラムでやろうとしていることを再現することができますか? – Joni
@ Joni残念ながら私はそれほど心配していません。エラーは両方ともsetLocationステートメントの行にあります – InterLinked