我在做电脑科学,但我不明白为什么这个不能用
public static void moon(Graphics g) {
for(int k = 0; k < 550; k+=2) {
if (k == 550) {
g.setColor(Color.blue);
g.fillOval(k,50,50,50);
for(long delay = 1; delay<10000000; delay++);
g.setColor(Color.white);
g.fillOval(k,50,50,50);
k = 0;
} else {
g.setColor(Color.black);
g.fillOval(k,50,50,50);
for(long delay = 1; delay<10000000; delay++);
g.setColor(Color.white);
g.fillOval(k,50,50,50);
}
}
}所以基本上就是让黑色的椭圆在屏幕上移动,当k =550时,它会让蓝色的椭圆在屏幕上移动。但它不会这样做,它只是移动黑色的,然后在达到550后停止。蓝色的那个就不会出现。
发布于 2011-12-05 22:29:48
您的代码永远不会达到k= 550。
for循环中的条件是k < 550。将其设置为k <= 550,它应该可以工作。
但是,您可能看不到它的发生,因为您正在使用for(long delay = 1; delay<10000000; delay++);来延迟-这不是一种非常可靠的延迟方式。
要更可靠地查看发生的事情,请尝试使用Thread.sleep(long)。
根据记录,我认为总体上有一些反对使用Thread.sleep(long)的论点,但在这种情况下,它应该足够了。
当我这样做的时候,k = 0赋值是多余的,甚至是糟糕的风格。您不应该在循环内为循环变量赋值。如果再次进入循环,for (int k=0部件将负责将k设置为0。
HTH
发布于 2011-12-05 22:29:45
您将始终输入else路径,因为您的for循环计数从0到549,因此k永远不会等于550。
发布于 2011-12-05 22:30:10
for(int k = 0; k < 550; k+=2)将循环,但k不会进入值为550的循环,因此根本不会执行if语句
使用这个
for(int k = 0; k <= 550; k+=2)https://stackoverflow.com/questions/8386779
复制相似问题