【发布时间】:2017-05-21 21:47:41
【问题描述】:
所以我得到了我的代码来解决这个关于 Java 的更多问题,以及为什么它以我得到它的方式工作 VS。为什么它在我写它的第一种方式不起作用。这是我写的原始代码。
private void renderGUIExtraLives (SpriteBatch batch){
float x = GUIcamera.viewportWidth - 50 - Constants.LIVES_START * 50;
float y = -15;
for (int i = 0; i < Constants.LIVES_START; i++) {
if (worldController.lives <= i) {
batch.setColor(0.5f, 0.5f, 0.5f, 0.5f);
batch.draw(Assets.instance.bunny.head, x + i * 50, y, 50, 50, 120, 100, 0.35f, -0.35f, 0);
batch.setColor(1, 1, 1, 1);
}
}
}
这不起作用,它没有抛出任何错误,但它没有将生命绘制到屏幕上,我所做的只是删除 if 语句的花括号,如下所示:
private void renderGUIExtraLives (SpriteBatch batch){
float x = GUIcamera.viewportWidth - 50 - Constants.LIVES_START * 50;
float y = -15;
for (int i = 0; i < Constants.LIVES_START; i++) {
if (worldController.lives <= i)
batch.setColor(0.5f, 0.5f, 0.5f, 0.5f);
batch.draw(Assets.instance.bunny.head, x + i * 50, y, 50, 50, 120, 100, 0.35f, -0.35f, 0);
batch.setColor(1, 1, 1, 1);
}
}
现在它神奇地起作用了,有人能解释为什么在我从嵌套的 if 语句中删除花括号后它起作用了吗?我真的很感激,如果有人在 Stack 上有类似问题或答案的链接,那么关于这个主题的任何讨论都会很高兴阅读。
【问题讨论】:
-
如果您不在
if (...)(或for(...)或while(...))之后写大括号,则只有下一条语句(在您的情况下为@ 987654327@) 构成了前面构造的主体。在 Java 中,缩进没有语义影响(有些语言——比如 Python——缩进是语义的一部分)以及为什么你应该总是写大括号(即使结构体只包含一个语句)。请查看luk2302's answer 以获得更清晰的信息。
标签: java for-loop if-statement nested