首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java - Alternate While循环声明

Java - Alternate While循环声明
EN

Stack Overflow用户
提问于 2012-07-15 22:53:05
回答 5查看 558关注 0票数 1

我目前正在做一个课本外的项目,我遇到了一个while循环的隐蔽问题。课本中的代码如下;

代码语言:javascript
复制
while(getImage().getWidth(applet) <= 0);
double x = applet.getSize().width/2 - width()/2;
double y = applet.getSize().height/2 - height()/2;
at = AffineTransform.getTranslateInstance(x, y);

我从来没有见过以分号结尾的while循环,所以我把我的代码解释为标准;

代码语言:javascript
复制
while(getImage().getWidth(applet) <= 0) {
    double x = applet.getSize().width/2 - width()/2;
    double y = applet.getSize().height/2 - height()/2;
    at = AffineTransform.getTranslateInstance(x, y);
}

有人能解释一下这两者之间的区别吗?我改变了我的代码,就像第一个一样,我的程序运行得很好,但是我不明白其中的区别。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-07-15 22:58:34

您的更改更改了代码的逻辑。while(getImage().getWidth(applet) <= 0);的思想是等到小程序宽度大小为gets>0。然后就是剩下的代码了。(它可能会等待另一个进程初始化小程序)。

票数 2
EN

Stack Overflow用户

发布于 2012-07-15 22:55:23

分号是一个空语句。您可以在评估while循环的延续条件有副作用时使用它:循环将产生一系列副作用,这些副作用会在循环完成时使循环条件无效,或者永远运行。

例如,如果您每次调用getImage()时都会获得一个新图像,则循环将继续,直到返回的图像的宽度为<= 0

下面是一个使用while循环查找字符串中a后面的第一个字符的简单示例:

代码语言:javascript
复制
int pos = 0;
String s = "quick brown fox jumps over the lazy dog";
while (i != s.length() && s.charAt(i++) != 'a')
    ;

因为像这样阅读代码可能会令人困惑,所以通常将分号放在单独的行上,缩进为循环语句。

票数 4
EN

Stack Overflow用户

发布于 2012-07-15 23:00:00

这是有意为之的;在后台进程中异步加载图像,getWidth(ImageObserver)实际上询问图像是否已经可以给出宽度。这只是一个所谓的繁忙循环。第一个getWidth是-1。

这是一种糟糕的编码风格,而且在getHeigth仍未完全读取的情况下,getWidth也是可以识别的。

这源于java的第一个时期,它的互联网连接速度很慢。

使用ImageObserver回调会更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11492895

复制
相关文章

相似问题

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