【问题标题】:Nested if statement within for loop [JAVA/LibGDX]for 循环中的嵌套 if 语句 [JAVA/LibGDX]
【发布时间】: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


【解决方案1】:

您的缩进是错误的并且具有误导性。如果在if 之后删除大括号,则只有下一条语句有条件地执行。这意味着代码基本上是:

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);
}

现在应该清楚为什么它“神奇地起作用”了,它只是无条件地绘制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多