🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

1773閲覧

タートルグラフィックスで元の場所に来たら止まるプログラムを書く

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2019/10/22 10:47

###Javaのタートルグラフィックスで亀がスタートした座標に戻っきたら静止させたい

亀を動かし初期座標(x座標の差 (の絶対値)が0.5 かつ y座標の差(の絶対値)が0.5以内であれば良い)に戻ったら静止するプログラムを書いています。

亀のインスタンスは(100, 200, 0)とし、以下の命令をインスタンスが初期位置に戻ってくるまで繰り返す
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

「前へd進み、右へr度回転する」

ここで初期位置は「x座標もy座標も元の座標と差が0.5以下であれば良いとする」

なおキーボードから出力される任意の数d, rは

5.0 <= d <= 10.0, 1.0 <= r <= 90.0 (範囲外の値が与えられた際は正しく動作しなくて良い)

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

プログラムしてみたのですが、実行できませんでした。

発生している問題・エラーメッセージ

演算子 <= は引数の型 boolean, double で未定義です

該当のソースコード

Java

1import java.util.Scanner; 2 3import tg.Turtle; 4import tg.TurtleFrame; 5public class homework06_01 { 6 7 public static void main(String[] args) { 8 // TODO 自動生成されたメソッド・スタブ 9 Scanner sc = new Scanner(System.in); 10 TurtleFrame f = new TurtleFrame(); 11 Turtle t = new Turtle(100, 200, 0); 12 f.add(t); 13 14 double d, r; 15 16 d = sc.nextDouble(); 17 r = sc.nextDouble(); 18 19 double tX = t.getX(), tY = t.getY(); 20 21 do { 22 t.fd(d); 23 t.rt(r); 24 } while ( 99.5 <= tX <= 100.5 && 199.5 <= tY <= 200.5 ); 25 }//エラーメッセージは↑の( )内です 26} 27

試したこと

t.getX()とt.getY()をそれぞれ別の変数でおいてから、while内に入力しました

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

99.5 <= tX <= 100.5 は (99.5 <= tX) <= 100.5 と同じ意味です。
先にカッコ内が計算され 論理値 <= 100.5 になるので、そのようなエラーを吐きます。

面倒ですが、次のように二つに分けて条件を書いて下さい。

Java

1} while ( 99.5 <= tX && tX <= 100.5 && 199.5 <= tY && tY <= 200.5 );

投稿2019/10/22 10:57

LouiS0616

総合スコア35668

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/22 11:12

回答ありがとうございます。 初歩的なことを忘れていました。 エラーメッセージの方は解決いたしました。 しかし亀がすぐに止まってしまうのでまだまだ道のりは遠そうです笑
LouiS0616

2019/10/22 11:30

亀ですからね。気長に頑張りましょう。
guest

0

while(true) {
t.fd(d);
t.rt(r);
double tX = t.getX(), tY = t.getY();
if(99.5 <= tX && tX <= 100.5 && 199.5 <= tY && tY <= 200.5)break;
}

で解決しました。変数定義の場所が不適切でしたので見直しました。

ご協力いただいたLouiS0616さんありがとうございました。

投稿2019/10/22 15:44

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問