由于有三个结果,因此如何将下面看到的条件代码分解为常规的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)
*/
答案 0 :(得分:2)
您的代码可以像这样拆分:
String message;
if ("A" == "A") {
if ("B" == "B") {
message = "1";
} else {
message = "2";
}
} else {
message = "3";
}
System.out.print(message);
三元运算符的工作方式类似于返回值的if
语句。但是,只能在一个表达式可以站立的地方,因此它不能自己站立。
?
之前的部分是条件,之后的部分是then表达式。 :
后面是else表达式。
嵌套三元?:
运算符很难读,应明确避免。
答案 1 :(得分:1)
条件(三元)运算符的工作方式如下:
(谓词)? (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");
还请注意,您正在使用==
运算符来比较字符串。在这种特殊情况下,谨慎使用它不会有任何区别...
答案 2 :(得分:1)
如果我正确理解您,并且A,B和C是布尔值,则可能是您想要的:
System.out.print( ((!A)? "3" : (!B)? "2" : "1"));
对于字符串,您必须确保使用A.equals(B)。