3 回答

TA貢獻1835條經(jīng)驗 獲得超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");
另請注意,您正在使用==運算符來比較字符串。在這種特殊情況下,這不會有任何區(qū)別,只是謹慎使用它......

TA貢獻1797條經(jīng)驗 獲得超6個贊
您的代碼可以這樣拆分:
String message;
if ("A" == "A") {
if ("B" == "B") {
message = "1";
} else {
message = "2";
}
} else {
message = "3";
}
System.out.print(message);
三元運算符的工作方式類似于if返回值的 - 語句。但是它只能是一個表達式可以站立的地方,所以它不能單獨站立。前面的部分?是條件,后面的部分是 then 表達式。后面:是else 表達式。嵌套的三元運算?:符非常難讀,絕對應(yīng)該避免。

TA貢獻1799條經(jīng)驗 獲得超6個贊
如果我理解正確并且 A、B 和 C 是布爾值,那么這可能就是您想要的:
System.out.print( ((!A)? "3" : (!B)? "2" : "1"));
對于字符串,您必須確保使用 A.equals(B)。
添加回答
舉報