我有一段代碼,它看起來是這樣的:如何將包含多個AND,OR的If語句轉換爲switch語句?
String cStatus = getStatus_c();
String nStatus = getStatus_n();
if (!((cStatus.equals(PEN) && nStatus.equals(ACT))
|| (cStatus.equals(PEN) && nStatus.equals(SUS))
|| (cStatus.equals(PEN) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(ACT) && nStatus.equals(SUS))
|| (cStatus.equals(ACT) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(SUS) && nStatus.equals(ACT))
|| (cStatus.equals(SUS) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(PEN_CAN) && nStatus.equals(ACT))
|| (cStatus.equals(PEN_CAN) && nStatus.equals(CAN))))
{
//Do someting//
}
上面的代碼是滿足我的要求,但我想用什麼樣開關塊等將其更改爲一些可讀的代碼我知道如何切換工作但我不確定如何隱藏我現有的代碼。
只是爲了可讀性,這裏是一個清理的版本(A
是PEN
,B
是ACT
,C
是SUS
和D
是PEN_CAN
):
if (! ( (cStat == A && nStat == B)
|| (cStat == A && nStat == C)
|| (cStat == A && nStat == D)
|| (cStat == B && nStat == C)
|| (cStat == B && nStat == D)
|| (cStat == C && nStat == B)
|| (cStat == C && nStat == D)
|| (cStat == D && nStat == B)
|| (cStat == D && nStat == D)
)
)
你並不真的需要一個開關把它清理乾淨,你的if語句可以通過使用狀態正確置於括號檢查減少冗餘清理。 – zgc7009
你能邏輯地解釋'boolean'表達式代表什麼嗎?更容易理解然後...你可以創建子表達式並將它們存儲在'boolean'變量中,給它們**好的變量名**。然後你的'if'-expression將使用這些變量並且是可讀的。您還可以在表達式中識別公共變量,並創建**嵌套** if if表達式。 – Zabuza