Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement 两个单独的if子句或一个单独的if-else子句_If Statement - Fatal编程技术网

If statement 两个单独的if子句或一个单独的if-else子句

If statement 两个单独的if子句或一个单独的if-else子句,if-statement,If Statement,愚蠢的问题,使用两个单独的if子句还是一个单独的if with if else子句是一种好的做法,例如: if (a = 1) (dosomething) if (a=2) (do other thing) 或 如果条件不同时为真,则这两种情况都会发生。变量a用作比较器,根本不改变 这两种方法按预期工作,在编程上没有问题,我只是想问什么是好的实践和推荐方法?取决于您想要实现的目标 在第一种情况下,两个条件都将被评估为独立的-即使两个条件都为真 在第二种情况下,如果第一个条件的计算结果为true

愚蠢的问题,使用两个单独的if子句还是一个单独的if with if else子句是一种好的做法,例如:

if (a = 1)
(dosomething)
if (a=2)
(do other thing)

如果条件不同时为真,则这两种情况都会发生。变量a用作比较器,根本不改变


这两种方法按预期工作,在编程上没有问题,我只是想问什么是好的实践和推荐方法?

取决于您想要实现的目标

在第一种情况下,两个条件都将被评估为独立的-即使两个条件都为真

在第二种情况下,如果第一个条件的计算结果为true,则将跳过else-if分支


你可以在上看到完整的解释。

这取决于你的意思。如果希望仅在第一个条件不为真时测试第二个条件,请使用
If(…)或else If(…)
选项。相反,如果希望两个条件都单独检查,请使用
if(…)if(…)


一个人不能在两件事情之间谈论最佳实践,这两件事情的含义是不同的。只需在每种情况下写下您设计的算法告诉您要写的内容,即在代码中忠实地表达您的设计。

如果使用第一种方法,则会检查每个If语句。在第二种情况下,如果一种情况正确,则忽略以下所有其他情况

所以,如果有一个复杂的if条件,在方法1中可能需要更长的时间


通过检查这些值(a==1,a==2,a==3,…),尝试切换

如果条件相互排斥(同一时间只能有一个),则第二种方法。否则,如果两种情况可以同时发生,第一种方法是正确的。

这两种测试明显不同。在第一种情况下,如果首先
a
为1,并且
do something
a
的值更改为2,则也将执行
do other thing
。第二种变体并非如此。因此,使用哪一种取决于您想要实现什么。

我会使用更易于阅读的样式。
清晰总是比难以理解的代码好


执行速度在这里不是什么大问题。

至少在Java字节码中,有三种不同的情况:

否则
if(a==3)//从局部变量a加载int,将int值3加载到堆栈中
//如果它们不相等,则转到(分支)线a=4;
a=5;//将int值5加载到堆栈中,并将其保存到变量中
else//没有关于这行的说明,因为它的行为是
//如第if行所述(a==3)
a=4;//将int值4加载到堆栈中,并将其保存到变量中
否则如果
if(a==3)//从局部变量a加载int,将int值3加载到
//堆栈,如果它们不相等,则在(a!=3)下转到(分支)行
a=5;//将int值5加载到堆栈中,并将其保存到变量中
//在a=4后转到第行;
否则,如果(a!=3)//从局部变量a加载int,则将int值3加载到
//堆栈,如果它们相等,则在a=4后转到(分支)线;
a=4;//将int值4加载到堆栈中,并将其保存到变量中
如果
if(a==3)//从局部变量a加载int,将int值3加载到堆栈中
//如果它们不相等,则在(a!=3)下转到(分支)线
a=5;//将int值5加载到堆栈中,并将其保存到变量中
如果(a!=3)//从局部变量a加载int,则将int值3加载到堆栈中
//如果它们相等,则在a=4后转到(分支)线;
a=4;//将int值4加载到堆栈中,并将其保存到变量中
示例代码
inta=5;
int-ifelse()
{
如果(a==5)a=3;//为true,则转到return
否则a=6;
返回a;//返回3
}
int-ifelseif()
{
如果(a==2)a=3;//false,则转到下一行
否则,如果(a==3)a=6;//false,则转到下一行
如果(a==5)a=9;//则返回true
return a;//返回9(顺便说一句,您可以使用这个开关)
}
int-ifif()
{
如果(a==5)a=3;//为true,则转到下一行
如果(a==3)a=6;//为true,则转到return
返回a;//返回6
}
长话短说
  • 如果不是,比较一次,就会发生一件事
  • If-else-If–根据结果进行一次或两次比较,不发生任何事情或只发生一件事,用于嵌套If子句
  • 如果——比较两次,什么也没有,一两件事发生了

在第一种情况下如何评估这两种情况?第一种情况:如果(a=1),第二种情况:如果(a=2)。(一次一个接一个)a怎么可能等于1和2?你错过了整个想法。我不是说a同时等于1和2,我是说这两个条件都会被计算。啊,明白了…它会检查每个条件,尽管有一个条件被计算…所以在我的例子中,与我的例子类似,这两个条件不会同时发生,检查的变量也不会改变,因此,它可以分别放在两个if条款中,也可以放在if和if else条款中,但推荐哪一个?@Maluvel没有“推荐委员会”的正式推荐。做你喜欢做的事。我会选择if(…)或者if(…)来更好地表达我所说的相互排斥的可能性。
if (a=1)
(do something)
else if (a=2)
(do other thing)