Java 如何使用特定条件(点位置、窗口宽度)将for循环更改为while循环?
我正在创建一个点竞争计划,我需要帮助改变一个for循环到一个while循环使用某些条件。这些条件是点的x坐标和窗口的宽度。我想要它,这样无论我选择什么宽度来制作窗口,程序都知道点何时完成 代码如下:Java 如何使用特定条件(点位置、窗口宽度)将for循环更改为while循环?,java,Java,我正在创建一个点竞争计划,我需要帮助改变一个for循环到一个while循环使用某些条件。这些条件是点的x坐标和窗口的宽度。我想要它,这样无论我选择什么宽度来制作窗口,程序都知道点何时完成 代码如下: createWindows(); // rise in steps of 10 pixels, cruise in steps of 5 pixels final int hStep = 28; final int vStep
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);
}
}
createWindows();
//以10像素的步幅上升,以5像素的步幅巡航
最终积分hStep=28;
最终int-vStep=0;
点连接=新点(100、270、70,颜色为黄色,点路线);
对于(int i=0;i而言,您的错误在于始终以相同的量移动点:30(循环)x28(像素)。无论窗口有多宽或每一步有多远,您始终移动860像素
因此,你必须调整你的步长或步长。改变步长会改变速度,因此这可能不是你想要的。相反,你必须采取更多或更少的步骤,直到达到点。正如我在评论中所说,自然语言算法准确地翻译为java:
/* As long as */ while (
/* the window width */ GWINDOW_WIDTH-60
/* is larger than */ >
/* the dot's x position */ connectMe.getX()) {
/* move the dot */ connectMe.moveDot(connectMe.getX() + hStep, connectMe.getY());
/* one step. */ Thread.sleep(200);
/* */ }
inti=0;while(我试过什么?你知道如何做while
循环吗?提示:当for
循环执行时:for(X;Y;Z){}
那么等价的while
循环是:X;while(Y){Z;}
这非常简单。自然语言算法是:只要窗口宽度大于圆点的x位置,将圆点移动一步。“现在,您使用Java语法编写这个精确的算法,它几乎可以逐字翻译。如果您不知道while循环是如何编写的,请查看。如果您的实现有问题,请发布它并寻求更多帮助。@MalteHartwig我输入了‘int I=0;while”(iYes,这与您上面所展示的基本相同,只是用while循环替换for。但是它仍然执行固定的30个步骤,而不是“只要点还没有到达终点”。您需要更改while循环的停止条件,并且您甚至在上面的代码中已经有了正确的条件。