Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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
Java 我们能用';吗';运算符而不是嵌套的if条件?_Java_If Statement_Nested If - Fatal编程技术网

Java 我们能用';吗';运算符而不是嵌套的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)(

要使用?写入的嵌套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)((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);