【问题标题】:Are multiple 'if' statements and 'if-else-if' statements the same for mutually exclusive conditions?对于互斥条件,多个“if”语句和“if-else-if”语句是否相同?
【发布时间】:2015-07-08 20:06:49
【问题描述】:

编写多个if 语句和if-else-if 语句之间有什么区别吗?

当我尝试编写一个包含多个 if 语句的程序时,它没有给出预期的结果,但它与 if-else-if 一起工作。

条件是互斥的。

【问题讨论】:

  • 除非条件是互斥的,否则是有区别的。
  • “当我尝试编写一个包含多个 'if ' 语句的程序时,它没有给出预期的结果。但是使用 'if else-if' 就可以了。”我想你只是自己回答了你的问题......
  • “If”语句存在于多种语言中,是编程的基础之一。这个网站是关于特定编程问题的问答,所以这样的讨论在这里过于广泛和离题。
  • 您能否更具体地说明您注意到的差异?如果您只担心正确性而不是样式/性能等,请提及。这将帮助您防止您的问题被关闭。

标签: java oop if-statement conditional-statements


【解决方案1】:

当您编写多个 if 语句时,可能会有多个 if 语句被评估为 true,因为这些语句是相互独立的。

当您编写单个 if else-if else-if ... else 语句时,只能将一个条件评估为真(一旦找到第一个评估为真的条件,则跳过下一个 else-if 条件) .

如果每个条件块从包含 if 语句的块中跳出(例如,通过从方法返回或从循环)。

例如:

public void foo (int x)
{
    if (x>7) {
        ...
        return;
    }
    if (x>5) {
        ...
        return;
    }    
}

将具有与以下相同的行为:

public void foo (int x)
{
    if (x>7) {
        ...
    }
    else if (x>5) {
        ...
    }
}

但是如果没有 return 语句,当 x>5 和 x>7 都为真时,它会有不同的行为。

【讨论】:

    【解决方案2】:

    是的,这很重要:请参阅The if-then and if-then-else Statements

    此外,您可以轻松地对其进行测试。

    代码 #1:

        int someValue = 10;
    
        if(someValue > 0){
            System.out.println("someValue > 0");
        }
    
        if(someValue > 5){
            System.out.println("someValue > 5");
        }
    

    将输出:

    someValue > 0
    someValue > 5
    

    而代码#2:

        int someValue = 10;
    
        if(someValue > 0){
            System.out.println("someValue > 0");
        }else if(someValue > 5){
            System.out.println("someValue > 5");
        }
    

    只会输出:

    someValue > 0
    

    如您所见,代码 #2 永远不会进入第二个块,因为第一个语句 (someValue > 0) 的计算结果为 true

    【讨论】:

      【解决方案3】:

      不,两者都不相同。 if 语句将检查所有条件。如果您将编写多个 if 语句,它将检查每个条件。 if else 将检查条件直到满足。一旦 if/else if 得到满足,它将超出该块。

      【讨论】:

        【解决方案4】:
        if()
        {
        stmt..
        }
        else
        {
        stmt
        }
        if()
        {
        stmt
        }
        here compiler will check for both the if condition.
        

        在下面的代码片段中,编译器将检查 if 条件,一旦第一个 if 条件为真,剩下的 if 条件将被绕过。

                if(){
        
                }
                else if
                {
        
                }
                else if
                {
        
                }
                else if
                {
        
                }
        

        【讨论】:

          猜你喜欢
          • 2019-09-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-06
          • 2020-12-29
          • 2019-04-09
          • 1970-01-01
          相关资源
          最近更新 更多