Loops 嵌套if vs.if,带双和?

Loops 嵌套if vs.if,带双和?,loops,nested,Loops,Nested,何时是使用嵌套if循环的合适时间?如果要同时测试这两个条件,请执行a | | b。如果要单独测试每个条件,请执行If(a){If(b){} 例如: if (a) { if (b) { // Both true. } else { // Only a. } } else { if (b) { // Only b. } else { // Neither true. } } 看看这个 i

何时是使用嵌套if循环的合适时间?

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

例如:

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

if(a) {
    if(b) {
       ...
    }
}
相当于

if(a && b) {
    ... 
}
i、 e.当
a
true
时,测试
b
,如果也是
true
则运行代码

两种代码的复杂性相同。
如果在
a
为真后不需要执行任何操作,那么第二个代码肯定是合适的,反之亦然

何时是使用嵌套if循环的适当时间

if(a){ if(b){
在大括号内带有&&运算符的if语句上

if(a && b){
对于start
if(a){if(b){
不是一个“嵌套的if循环”。它是一个嵌套的if语句。(或者至少
if(b){…
部分是嵌套语句。)

其中的“循环”一词意味着某些东西在重复。这里没有重复

(很抱歉,学究式的说法,但当你错误地使用这样的基本术语时,这强烈表明你不知道该术语的含义,或者你不理解错误地应用该术语的原因。)


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

 if(a){ if(b){

做同样的事情。那么你应该用哪一个呢?归结起来有两件事:

  • 可读性:取决于
    a
    b
    是什么(即在实际程序中),对于普通Java程序员来说,一种形式可能比另一种更具可读性。可读性的差异可能是微小的,也可能是巨大的

  • 个人品味:出于个人原因,一些程序员喜欢一种形式而不是另一种形式

有几个非原因:

  • 样式指南:据我所知,没有Java样式指南要求一种表单优于另一种表单

  • 效率:据我所知,这两个版本在性能上没有系统性差异


最后

嵌套的if语句是否用于像嵌套的for语句一样迭代数组

否。嵌套的if语句不是循环。它们不会迭代

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


底线是像
if
while
for
、块、声明、赋值等结构都是通用结构,可以用于无数不同的事情。最重要的是了解它们的作用。一旦你知道了这些,你就可以使用它们来做各种事情不言而喻……如果你想一想你正在尝试实现的算法。

当与
else
一起出现时,你选择哪一种算法很重要

在单个
if
情况下,当您将其与
else
一起使用时,
else
将在
a
b
false
时运行。但是,在嵌套
if
s的情况下,
else
将仅在
a
为false时运行,因为当ev评估
b

下面是一个例子:

var a=true
var b=错误
//第一种情况(单线)
如果a&b{
印刷品(“foo”);
}否则{
印刷品(“酒吧”);
}
//输出:“巴”
//第二种情况(嵌套)
如果{
如果b{
印刷品(“foo”);
}
}否则{
打印(“条”)
}
//无输出

我到底误解了什么?@Dimoff请接受。它更好地解决了这个问题。我想删除这个答案我想它们都是真的,我想这不包括管道操作符,不?@nosille对于这个上下文,
|
操作符被命名为
条件或操作符
。这两个条件不是一起测试的,请阅读关于短路。基本上,如果第一个条件通过,那么在| |中,第二个条件甚至不会执行。if语句不是循环。在单if情况下,当与else一起使用时。else仅在a和b都为真时运行。但是在嵌套if情况下,即使只满足条件a,else也会运行。
 if(a && b){