Java 我们能用';吗';运算符而不是嵌套的if条件?
要使用?写入的嵌套if条件:语法。这是不允许的情况吗 下面是代码Java 我们能用';吗';运算符而不是嵌套的if条件?,java,if-statement,nested-if,Java,If Statement,Nested If,要使用?写入的嵌套if条件:语法。这是不允许的情况吗 下面是代码 int i=(10>5)?(2<5)?230:456; System.out.println("i="+i); inti=(10>5)?(25){ if(25)将被计算,如果是真的,它将验证if 25?(25)?(2您忘记添加表达式的一部分。请按如下方式尝试: int i = (10>5) ? ( (2<5) ? 230:456 ) : 0; int i=(10>5)(
int i=(10>5)?(2<5)?230:456;
System.out.println("i="+i);
inti=(10>5)?(25){
if(25)将被计算,如果是真的,它将验证if 25?(25)?(2您忘记添加表达式的一部分。请按如下方式尝试:
int i = (10>5) ? ( (2<5) ? 230:456 ) : 0;
int i=(10>5)((25)
为false。三元运算符具有以下语法
aBoolean ? value : value
它本身将返回一个值,因此您可以将它们嵌套为
aBoolean ? (aBoolean ? value : value) : value
您的代码(10>5)?(2您可以选择以下解决方案。但今天不建议这样做,因为源代码的认知复杂性在今天的行业中是一个相当重要的问题。根据您共享的逻辑,可以通过以下两种方式实现相同的解决方案
int i=(10>5) && (2<5)?230:456;
System.out.println("i="+i);
int i = (10>5)?(2<5)?230:456:0;
System.out.println("i="+i);
int i=(10>5)和&(25)?(2是的,您可以在if条件下尽可能深地嵌套三元运算符。然而,三元运算符是if条件的压缩版本,如果您将它们压缩得更深,它们可能会使您的代码不可读
请记住将条件括起来只是为了使其可读,但这不是一项要求(0有时,如果重新排列条件,可能更容易理解)
而不是
intv=(a>b)?(c>d)?100:200:300;
你能行
intv=(ad)?100:200;
唯一的区别是在后一种情况下,初始条件在为true时立即返回一个值,在为false时需要进一步求值。您有两个三元组?
,只有一个选择分隔符:
。您需要的?
数量与:
(10>5)相同?(2两者都是独立的东西..这取决于你的要求。!IMHO,可读性比代码行的数量更重要。此外,为什么在这个问题中要标记Javascript???@KrishnaPrashatt,我标记Javascript是因为我们在js中也使用了三元运算符。我正要编辑我的代码。我会简单地用if…else if…e解决这个问题lse
(10>5)和&(2根据逻辑,10>5条件没有其他部分。一旦成功,它将进入下一个条件,即2但10>5和2的if组合
aBoolean ? (aBoolean ? value : value) : value
aBoolean ? (aBoolean ? value : value)
int i=(10>5) && (2<5)?230:456;
System.out.println("i="+i);
int i = (10>5)?(2<5)?230:456:0;
System.out.println("i="+i);