Java 中的条件条件
conditional conditions in Java
我有:
boolean cond=false;
if(!gto)
cond=(in-Math.pow(base, pot)<0);
else
cond=(in-Math.pow(base, pot)>=0);
while(cond)//Pos1
...
这项工作没有以预期的方式进行,因为 pot
在 while 循环中发生了变化。
当然,我可以编写一个布尔值方法,但我想知道,是否有一种方法可以强制 Java 在到达 Pos1 时评估 cond
?
while((in-Math.pow(base,pot<0&&!gto)||(in-Math.pow(base, pot)>=0&>o))){
//do sth
}
这是你想要的吗?
为了清洁和可维护性,使用一种方法,假设您有 Java 8 个可用,您也可以使用如下所示的 lambda 谓词:
Predicate<Boolean> checkCondition = (boolean gto) -> {
double someCalculationResult = in - Math.pow(base, pot);
if (!gto) {
return someCalculationResult < 0;
}
return someCalculationResult >= 0;
}
while (checkCondition(gto)) {
...
}
或者内联条件(参见@kleopi 的回答)如果这是一些写完就不用管的代码。
如果gto
的值在循环中没有变化并且循环体不复杂,那么你可以为个别情况编写两个单独的循环:
if ( gto ) {
while ( in - Math.pow(base, pot) >= 0 ) {
// Do stuff
}
} else {
while ( in - Math.pow(base, pot) < 0 ) {
// Do stuff
}
}
如果可能,您还可以将循环体移动到一个单独的方法中,并从两个循环中调用它。
我有:
boolean cond=false;
if(!gto)
cond=(in-Math.pow(base, pot)<0);
else
cond=(in-Math.pow(base, pot)>=0);
while(cond)//Pos1
...
这项工作没有以预期的方式进行,因为 pot
在 while 循环中发生了变化。
当然,我可以编写一个布尔值方法,但我想知道,是否有一种方法可以强制 Java 在到达 Pos1 时评估 cond
?
while((in-Math.pow(base,pot<0&&!gto)||(in-Math.pow(base, pot)>=0&>o))){
//do sth
}
这是你想要的吗?
为了清洁和可维护性,使用一种方法,假设您有 Java 8 个可用,您也可以使用如下所示的 lambda 谓词:
Predicate<Boolean> checkCondition = (boolean gto) -> {
double someCalculationResult = in - Math.pow(base, pot);
if (!gto) {
return someCalculationResult < 0;
}
return someCalculationResult >= 0;
}
while (checkCondition(gto)) {
...
}
或者内联条件(参见@kleopi 的回答)如果这是一些写完就不用管的代码。
如果gto
的值在循环中没有变化并且循环体不复杂,那么你可以为个别情况编写两个单独的循环:
if ( gto ) {
while ( in - Math.pow(base, pot) >= 0 ) {
// Do stuff
}
} else {
while ( in - Math.pow(base, pot) < 0 ) {
// Do stuff
}
}
如果可能,您还可以将循环体移动到一个单独的方法中,并从两个循环中调用它。