首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Paint if x= location执行此操作,否则执行此操作

Java Paint if x= location执行此操作,否则执行此操作
EN

Stack Overflow用户
提问于 2011-12-05 22:27:38
回答 4查看 112关注 0票数 1

我在做电脑科学,但我不明白为什么这个不能用

代码语言:javascript
复制
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后停止。蓝色的那个就不会出现。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2011-12-05 22:29:45

您将始终输入else路径,因为您的for循环计数从0到549,因此k永远不会等于550。

票数 3
EN

Stack Overflow用户

发布于 2011-12-05 22:30:10

代码语言:javascript
复制
for(int k = 0; k < 550; k+=2)

将循环,但k不会进入值为550的循环,因此根本不会执行if语句

使用这个

代码语言:javascript
复制
for(int k = 0; k <= 550; k+=2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8386779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档