为了账号安全,请及时绑定邮箱和手机立即绑定

Java条件运算符三种可能的结果

Java条件运算符三种可能的结果

人到中年有点甜 2023-03-02 09:56:11
如何将您在下面看到的条件代码分解为常规if语句以了解其工作原理,因为它具有三个结果。我改变了价值观只是为了看看它的去向:System.out.print(("A"=="A")?("B"=="B")?"1":"2":"3"); /* if A is False (Output = 3) if B is False (Output = 2) if A&B are True (Output = 1) */
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超6个赞

条件(三元)运算符以下列方式工作:


(谓词)?(onTrueValue) : (onFalseValue);


所以在你的情况下,我们拥有的是:


("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");

哪个评估为:


Is A equal to A? 

If yes -> return Is B equal to B

    If yes -> return 1;

    If no -> return 2;

If no -> return 3;

如同:


condition1 ? (condition2 ? val1 : val2) : val3;

以及一些验证测试


// Prints 1 as both conditions are true.

System.out.println("A"=="A" ? ("B"=="B" ? "1" : "2") : "3");

// Prints 3 as first condition fails.

System.out.println("A"=="notA" ? ("B"=="B" ? "1" : "2") : "3");

// Prints 2 as second condition fails.

System.out.println("A"=="A" ? ("B"=="notB" ? "1" : "2") : "3");

另请注意,您正在使用==运算符来比较字符串。在这种特殊情况下,这不会有任何区别,只是谨慎使用它......


查看完整回答
反对 回复 2023-03-02
?
FFIVE

TA贡献1797条经验 获得超6个赞

您的代码可以这样拆分:


String message;

if ("A" == "A") {

    if ("B" == "B") {

        message = "1";

    } else {

        message = "2";

    }

} else {

    message = "3";

}

System.out.print(message);

三元运算符的工作方式类似于if返回值的 - 语句。但是它只能是一个表达式可以站立的地方,所以它不能单独站立。前面的部分?是条件,后面的部分是 then 表达式。后面:是else 表达式。嵌套的三元运算?:符非常难读,绝对应该避免。


查看完整回答
反对 回复 2023-03-02
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

如果我理解正确并且 A、B 和 C 是布尔值,那么这可能就是您想要的:

System.out.print( ((!A)? "3" : (!B)? "2" : "1"));

对于字符串,您必须确保使用 A.equals(B)。


查看完整回答
反对 回复 2023-03-02
  • 3 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信