是否可以缩短if语句?例如:
if (intno == 0 || intno == 4 || intno == 7)
可能是这样的:
if (intno == 0 || 4 || 7)
那会出现错误,但有什么相似的吗?
答案 0 :(得分:3)
对于整数类型和枚举,您可以使用switch语句:
switch(intno) {
case 0:
case 4:
case 7:
//code here
break;
}
这也适用于Java 7 +中的字符串
答案 1 :(得分:1)
评论中已经提出以下建议:
Arrays.asList(0, 4, 7).contains(intno)
它是正确的,更短,但速度更慢。
请注意,此代码在幕后执行了大量操作:
0
,4
和7
int
转换为Integer
s。List
intno
转换为Integer
equals
方式比仅仅三次检查慢。当然,如果您每次用户点击按钮时都执行一次该代码,那么这并不重要。如果你每秒呼叫它一百次,它可能会。
然而,在我看来,使用它可以比使用long更清楚,特别是如果不是3,则有15个有效条件。如果不是使用幻数,你甚至可以存储返回的列表,你可能会得到一些清晰点:
private static final List<Integer> VALID_NUMBERS = Arrays.asList(0, 4, 7);
// ...
if (VALID_NUMBERS.contains(intno)) {
// Code here
}
更短,可以说更清晰。它 慢,所以要小心这些结构,不要每次都使用它。
答案 2 :(得分:0)
您可以生成真值映射
Set<Integer> set = new HashSet<Integer>();
map.add(0);
map.add(4);
map.add(7);
然后
if(map.contains(intValue){
}