嵌套if if与双&符号?

时间:2014-10-04 22:58:43

标签: java loops if-statement nested

何时是使用嵌套if循环的正确时间

if(a){
  if(b){

通过&&&大括号内的操作员?

if(a && b){

两个任务都用于测试2个条件,如果两个条件都符合条件,则为真。

嵌套if语句是否用于迭代数组,如嵌套for?

5 个答案:

答案 0 :(得分:5)

  

何时是使用嵌套if循环的正确时间

if(a){ if(b){
     

通过&&&大括号内的操作员?

if(a && b){

首发if(a){ if(b){不是"嵌套if循环"。它是嵌套的if 语句。 (或者至少if (b) { ...部分是嵌套语句。)

单词"循环"在IT意味着重复的事情。这里没有重复。

(抱歉迂腐,但是如果你错误地使用这样的基本术语,那么强烈暗示你要么不知道这个词是什么意思,要么你不明白你是什么&# 39;已经错误地将该术语应用于。)


正如其他答案所解释的那样,这两种形式

 if(a){ if(b){

 if(a && b){

做同样的事情。那么你应该使用哪一个?它归结为两件事:

  • 可读性:取决于ab是什么(即在实际程序中),一个表单可能比普通Java程序员的其他更具可读性。可读性的差异可能很小,或者可能很大。

  • 个人品味:由于个人原因,一些程序员偏爱一种形式而另一种形式。

有几个非原因

  • 样式指南:据我所知,没有Java样式指南要求一个表单而不是另一个表单。

  • 效率:据我所知,两个版本之间的性能没有系统差异。


最后......

  

嵌套的if语句是否用于迭代数组,如嵌套的

没有。嵌套的if语句不是循环。他们不会迭代。

当然,您可以使用嵌套的if语句作为迭代的一些更大代码的一部分......但是没有什么神奇之处。

底线是ifwhilefor,块,声明,赋值等构造是通用构造,可以是用于无数个不同的东西。最重要的是了解他们的所作所为。一旦你知道了,你可以使用它们的各种东西变得不言而喻......如果你考虑你想要实现的算法。

答案 1 :(得分:1)

与其他人一起陪伴时,您选择的哪个人很重要。

在单个if情况下,与else一起使用时。仅当a和b都为true时,Else才会运行。但是,在嵌套if的情况下,即使仅满足条件a,else也会运行。

这是一些伪代码:

a = true
b = false

第一种情况(单行):

if(a && b) {
 print("foo");
}
else {
 print("bar");
}
Output: bar

第二例(嵌套):

if(a) {
 if(b) {
   print("foo");
 }
}
else {
 print("bar")
}
Output: foo

答案 2 :(得分:-1)

如果要同时测试这两个条件,请执行a || b。如果您想单独测试每个条件,请执行if(a) { if (b) { } }

例如:

if (a) {
    if (b) {
        // Both true.
    } else {
        // Only a.
    }
} else {
    if (b) {
        // Only b.
    } else {
        // Neither true.
    }
}

答案 3 :(得分:-1)

例如,我正在检查一年中的日期是否已经过去。

假设a是月份,b是要检查的日期,
检查日期为5/20

a2b2是今天的日期,
今天是8/13


如果要检查它,请执行以下操作:

if(a <= a2) {
    if(a == a2) {
        if(b < b2) {
            //true
        } else {
            //false
        }
    } else {
        //true
    }
} else {
    //false
}

不是这样的:

if((a <= a2) && (b < b2)) {
    //true
}

首先看一下第二种方法,第一个值应该为true,因为a(5)小于a2(8);
但第二个值应返回false,因为b(20)不小于(13);
因此整个表达式都为假,但这应该是正确的,因为如果今天是8/13,则通过5/20灵魂。

这种检查这些东西的方法不正确

看看第一个方法,则第一个值应该为true,因为a(5)小于a2(8);
第二个值应该为false,因为a(5)不是a2(8);
所以结果是true

回到第二个值,如果月份等于(5),则第三个值应该为false,因为b(20)不小于b2(13),
实际上,如果日期是5/20,今天是5/13,则该日期尚未过去。

答案 4 :(得分:-2)

看看这个

if(a) {
    if(b) {
       ...
    }
}

将等同于

if(a && b) {
    ... 
}

即。当atrue时,请测试b,如果它还是true则运行代码。

两种代码都具有相同的复杂性 如果在a为真之后你不需要做任何事情,那么肯定第二个代码是合适的,反之亦然。