私はドットレースプログラムを作成しており、特定の条件を使用してforループをwhileループに変更する手助けが必要です。これらの条件は、ドットのx座標とウィンドウの幅です。どんな幅のウィンドウを作るかにかかわらず、プログラムはドットが終わったときを知っています。特定の条件(ドット位置、ウィンドウ幅)を使用してforループをwhileループに変更するにはどうすればよいですか?
createWindows();
// rise in steps of 10 pixels, cruise in steps of 5 pixels
final int hStep = 28;
final int vStep = 0;
Dot connectMe = new Dot(100, 270, 70, Color.yellow, dotCourse);
for(int i=0; i<20; i++)
{
connectMe.moveDot(connectMe.getX(), connectMe.getY()-vStep); // Move up by vStep
Thread.sleep(1);
}
for(int i=0; i<30;i++)
{
connectMe.moveDot(connectMe.getX() + hStep, connectMe.getY()); // Move right by hStep
Thread.sleep(200);
boolean finish = (GWINDOW_WIDTH-60) <= connectMe.getX();
if (finish) {
}
System.out.println("Did the dot finish? : " + finish);
}
}
'int i = 0; while(i <20){ //他のもの i ++; } ' – XtremeBaumer
あなたは何を試しましたか? 'while'ループを作る方法を知っていますか?ヒント: 'for'ループがこれを行うとき、' for(X; Y; Z){} 'と等価な' while'ループはこれです: 'X;一方、(Y){Z; } ' – David
これは非常に簡単です。自然言語アルゴリズムは次のとおりです。「ウィンドウの幅がドットのx位置よりも大きい場合は、ドットを1ステップ移動します。」今度は、この正確なアルゴリズムをJava構文で書いています。 whileループの記述方法がわからない場合は、[Oracleチュートリアル](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html)を参照してください。あなたの実装に問題がある場合は、それを掲示し、さらに助けを求める。 –