【问题标题】:If statement with no curly braces works with multiline if statement inside it? [duplicate]没有花括号的 if 语句可以在其中使用多行 if 语句吗? [复制]
【发布时间】:2020-08-19 02:11:41
【问题描述】:
public class Main {
    public static void main(String[] args) {
        int x = 1;
        if (x < 10)
            if (x == 0)
                System.out.println("Zero");
            else if (x == 1)
                System.out.println("One");
            else
                System.out.println("Other but smaller than 10");
        else
            System.out.println("Greater than 10");
    }
}

我刚刚尝试过这个,它的工作原理与我用花括号包围内部条件完全相同。
我知道可以不使用花括号进行单行语句,但为什么在这种情况下会起作用?

谢谢,如果这是一个明显的问题,我很抱歉。

【问题讨论】:

  • 您的问题在这里:“单行语句”......正确的是“单语句”,与使用的行无关。带有所有分支的 if/else 块是一个语句。
  • 内部的东西真的只有一个块。我不明白为什么它不应该工作
  • 您的理解是正确的,您的想法中唯一遗漏的是每个块下有多少条语句?。实际上,if-else 构造的每个块下都有 one 语句。请注意,您的父 if 只有一个嵌套的 if 语句,而所有其余的 elseelse if 块都具有类似的 one声明每个。所以,是的,如果 if-else 块没有花括号,它们最多可以包含一个语句,在你的情况下,每个块都包含一个 (direct 连接,没有孙子) 声明。

标签: java if-statement curly-braces


【解决方案1】:

它之所以有效,是因为它可以占用整个 if-else 块或另一个块。这也适用于 for 循环,例如:

for(String e : strArray) 
      if(e.equals(str)) 
            System.out.println("Yes);
      else...

【讨论】:

    【解决方案2】:

    这是按预期工作的,因为在 if、else-if 和 else 块中只有一个语句。如果您尝试在此块中的任何一个中放置多个语句,它将失败。

    【讨论】:

      猜你喜欢
      • 2012-05-03
      • 1970-01-01
      • 2023-01-16
      • 2017-06-14
      • 2015-05-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      相关资源
      最近更新 更多