Pra*_*eek 7 java if-statement switch-statement conditional-statements
我需要建议在Java中应用条件的正确方法.
我有100个条件,我必须根据这些条件更改将显示给用户的String变量的值.
示例条件: a<5 && (b>0 && c>8) && d>9 || x!=4
有更多的条件,但变量或多或少相同.
我现在正在这样做:
if(condition1)
else if(condition2)
else if(condition3)
...
Run Code Online (Sandbox Code Playgroud)
切换案例替代方案显然会嵌套在if-else的ie中
if(condition1)
switch(x)
{
case y:
blah-blah
}
else if(condition2)
switch(x)
{
case y:
blah-blah
}
else if(condition3)
...
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一些更优雅的解决方案,比如使用具有多态支持的接口,我可以做些什么来避免代码行或什么应该是正确的方法.
- -编辑 - -
我想在Android设备上需要这个.但它更像是一个java构造.
这是我与我的条件的一个小快照.如果少数通过/失败,将添加更多.这显然需要更多if-else有/无嵌套.在那种情况下,处理会变慢.
我现在将消息存储在一个单独的类中,其中包含我保持静态的各种字符串变量,因此如果条件为真,那么我从唯一的类中选择静态变量并显示该变量.这对于存储结果消息是否正确.
根据有条件输入的数量,您可能能够使用查表,甚至HashMap
,通过编码所有的输入或单值甚至一些相对简单的复杂条件:
int key = 0;
key |= a?(1):0;
key |= b?(1<<1):0;
key |= (c.size() > 1)?(1<<2):0;
...
String result = table[key]; // Or result = map.get(key);
Run Code Online (Sandbox Code Playgroud)
这种范例具有恒定时间(O(1)
)复杂性的附加优点,这在某些情况下可能很重要.根据条件的复杂性,您甚至可能在代码路径中平均拥有较少的分支,而不是完整的if-then-else
意大利面条代码,这可能会提高性能.
如果您在问题中添加了更多上下文,我们可能会为您提供更多帮助.条件输入来自哪里?他们像什么?
而更重要的问题是:您要解决的实际问题是什么?