3 回答
TA贡献1835条经验 获得超7个赞
条件(三元)运算符以下列方式工作:
(谓词)?(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");
另请注意,您正在使用==运算符来比较字符串。在这种特殊情况下,这不会有任何区别,只是谨慎使用它......
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 表达式。嵌套的三元运算?:符非常难读,绝对应该避免。
TA贡献1799条经验 获得超6个赞
如果我理解正确并且 A、B 和 C 是布尔值,那么这可能就是您想要的:
System.out.print( ((!A)? "3" : (!B)? "2" : "1"));
对于字符串,您必须确保使用 A.equals(B)。
添加回答
举报