我有一段代码,它看起来是这样的:如何将包含多个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