“不确定道路”&&&引用;Java中的条件工程
我的状况有一些基本的问题,我不知道为什么 我想在“不确定道路”&&&引用;Java中的条件工程,java,loops,conditional,Java,Loops,Conditional,我的状况有一些基本的问题,我不知道为什么 我想在e1和e2和e3大于tol时运行这个循环,但它只考虑e3>tol条件,并忽略它前面的两个条件 代码如下: do{ .... }while((e1>tol)&&(e2>tol)&&(e3>tol)); 我相信这与&&or有关,我将它们与同一个变量tol进行比较,但我仍然不确定原因 我设法使它与三个嵌套的ifs一起工作: do{ ..... if(e1&
e1
和e2
和e3
大于tol
时运行这个循环,但它只考虑e3>tol
条件,并忽略它前面的两个条件
代码如下:
do{
....
}while((e1>tol)&&(e2>tol)&&(e3>tol));
我相信这与&&or有关,我将它们与同一个变量tol
进行比较,但我仍然不确定原因
我设法使它与三个嵌套的ifs一起工作:
do{
.....
if(e1<tol)
if(e2<tol)
if(e3<tol)
b=true;
}while(b==false);
}
如果我删除了另外两个条件,并且只使用
}while(e1>tol)代码>它起作用,另外两个也一样,如果我单独调节它们,它起作用,我的问题是在检查它们三个是否满足条件时。我认为这不完全相同,在包含“&&”的代码段中,您希望在每次迭代中所有三个e*都大于tol,而在第二个代码段中,您所做的并不完全相同,e1和e2可能比tol小,而不是e3,这在第一个代码段中不会发生。
HTH尝试编写单元测试,并在条件为真并进入循环时调试该条件。您可以像这样交错代码以调试每一行:
do{
....
}while((e1>tol)
&&(e2>tol)
&&(e3>tol));
您的if
语句:
if (e1 < tol)
if (e2 < tol)
if (e3 < tol)
b = true;
如您所见,最初的错误是您需要使用|
(或),而不是&&
(和)
是=
应该在那里,还是您的意思是(e1>tol | | e2>tol | | e3>tol)
,由您决定
在简单的英语中,while(!b)
读作“whilenot b”或“b时停止”,并且由于b被定义为“如果所有E1、E2和E3都小于TOL,则为true”,因此组合起来意味着“当所有E1、E2和E3都小于TOL时停止”
使用更新的while
条件,即“在E1、E2或E3中至少有一个大于(或等于)TOL时继续”。请显示足够的代码以重现问题。如前所述,我认为初始循环没有问题。此外,请提供一些理由来解释为什么您认为只考虑了e3>tol条件
。另外需要注意的是,
的反面是,非常感谢Andreas,我认为如果我使用|
,那么它只需要满足三个条件中的一个,但结果却是oposite。关于(!b)
的注释。
if (e1 < tol)
if (e2 < tol)
if (e3 < tol)
b = true;
b = (e1 < tol && e2 < tol && e3 < tol);
} while (e1 >= tol || e2 >= tol || e3 >= tol);