对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?
Posted
技术标签:
【中文标题】对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?【英文标题】: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”语句存在于多种语言中,是编程的基础之一。这个网站是关于特定编程问题的问答,所以这样的讨论在这里过于广泛和离题。 您能否更具体地说明您注意到的差异?如果您只担心正确性而不是样式/性能等,请提及。这将帮助您防止您的问题被关闭。 【参考方案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
【讨论】:
以上是关于对于互斥条件,多个“if”语句和“if-else-if”语句是不是相同?的主要内容,如果未能解决你的问题,请参考以下文章