我学会了终结表达,但我想要的是有点不同。
我有以下内容:
int MODE = getMyIntValue();
我做如下比较:
if(MODE == 1 || MODE == 2 || MODE == 3) //do something
我想知道是否有一种简短的方法可以做到这一点,我尝试了类似的东西,但它不起作用:
if(MODE == 1 || 2 || 3) //do something
有一个简短的快速方法吗?我喜欢快速的“ifs”,因为它使代码更加清晰,例如,它更清楚:
System.out.println(MODE == 1 ? text1 : text2):
比这个:
if(MODE == 1) System.out.println(text1):
else System.out.println(text1):
提前致谢!
答案 0 :(得分:2)
可能你可以做这样的事情
System.out.println(Mode == 1 ? "1" : Mode == 2 ? "2" : "3");
switch-case也使代码比多个if-else
更具可读性答案 1 :(得分:1)
好吧,如果你不介意拳击,你可以使用你之前准备的一套:
// Use a more appropriate name if necessary
private static final Set<Integer> VALID_MODES
= new HashSet<>(Arrays.asList(1, 2, 3));
...
if (VALID_MODES.contains(mode)) {
}
你可以使用int[]
和自定义“这个数组是否包含这个值”方法如果你想...对于二进制搜索它将是O(N)或O(log N),但我怀疑我们还是在谈论小集。
答案 2 :(得分:1)
我强烈建议使用更类型的方法:
public class QuickIntSample {
enum Modes {
ONE(1),TWO(2),THREE(3); // you may choose more useful and readable names
int code;
private Modes(int code) {
this.code = code;
}
public static Modes fromCode(final int intCode) {
for (final Modes mode : values()) {
if (mode.code == intCode) {
return mode;
}
}
return null;
}
} // -- END of enum
public static void main(String[] args) {
int mode = 2;
if( Modes.fromCode(mode) == Modes.TWO ) {
System.out.println("got code 2");
}
}
}
HTH