Java 短|快速整数值比较
我学习了术语表达,但我想要的是一点不同 我有以下资料:Java 短|快速整数值比较,java,validation,if-statement,comparison,Java,Validation,If Statement,Comparison,我学习了术语表达,但我想要的是一点不同 我有以下资料: int MODE = getMyIntValue(); if(MODE == 1 || MODE == 2 || MODE == 3) //do something 我做了如下比较: int MODE = getMyIntValue(); if(MODE == 1 || MODE == 2 || MODE == 3) //do something 我想知道是否有一种简单的方法可以做到这一点,我尝试了类似的方法,但没有成功: if(M
int MODE = getMyIntValue();
if(MODE == 1 || MODE == 2 || MODE == 3) //do something
我做了如下比较:
int MODE = getMyIntValue();
if(MODE == 1 || MODE == 2 || MODE == 3) //do something
我想知道是否有一种简单的方法可以做到这一点,我尝试了类似的方法,但没有成功:
if(MODE == 1 || 2 || 3) //do something
有一种快捷的方法吗?我喜欢快速的“如果”,因为它使代码更清晰,例如,它更清晰:
System.out.println(MODE == 1 ? text1 : text2):
除此之外:
if(MODE == 1) System.out.println(text1):
else System.out.println(text1):
提前谢谢 也许你可以这样做
System.out.println(Mode == 1 ? "1" : Mode == 2 ? "2" : "3");
也使代码比多个if-else更具可读性可能您可以这样做
System.out.println(Mode == 1 ? "1" : Mode == 2 ? "2" : "3");
也使代码比多if-else更具可读性好吧,如果你不介意拳击比赛,你可以使用你之前准备的一套:
// 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)) {
}
//如有必要,请使用更合适的名称
私有静态最终集有效_模式
=新哈希集(Arrays.asList(1,2,3));
...
if(有效模式包含(模式)){
}
如果需要,可以使用
int[]
和自定义的“此数组是否包含此值”方法。。。二进制搜索可能是O(N)或O(logn),但我怀疑我们讨论的是小集合。如果您不介意拳击比赛,您可以使用您之前准备的集合:
// 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)) {
}
//如有必要,请使用更合适的名称
私有静态最终集有效_模式
=新哈希集(Arrays.asList(1,2,3));
...
if(有效模式包含(模式)){
}
如果需要,可以使用
int[]
和自定义的“此数组是否包含此值”方法。。。对于二进制搜索,可能是O(N)或O(logn),但我怀疑我们讨论的是小集合。我强烈建议使用更类型化的方法:
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我强烈建议使用更类型化的方法:
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应该有HashSer不应该有?不过,谢谢你,就像我预期的那样工作(y)@Murillo:如果你使用的是Java7,那就不是了——它是“菱形操作符”(实际上不是操作符,但是…),应该有HashSer,不应该有?不过,谢谢你,工作得像我预期的那样(y)@Murillo:如果你使用Java 7,那就不是了-它是“钻石操作符”(实际上不是一个操作符,但是…)嗯,它工作了,但是我可以更好地利用Jon Skeet的建议,但是你的回答也非常好和简单,+1嗯,它工作了,但是我可以更好地利用Jon Skeet的建议,但是你的回答也很好很简单,+1