Java - 用于多个或语句的更短代码

时间:2014-10-06 08:22:25

标签: java if-statement

检查int是否为(1,3,8,7)

int a= 1;
if (a==1 || a==3 || a==8 ....) {
   doAdd();
}

可以缩短" if-statement"类似于:

if (a==1 || 3 || 8 ...)

不使用数组,只想用更少的代码编写它。


第一版(仅供参考):

//计算元音(a,o,e,u,i)

[...]
String a= 'o';
if (a=='a' || a=='o' || a=='e' ....) {
   doAdd();
}
[...]

可以缩短" if-statement"类似于:

if (a=='a' || 'o' || 'e' ...)

我知道这不是有效的java,但我想知道是否有另一种方法可以做到这一点(没有循环通过"元音阵列")。

4 个答案:

答案 0 :(得分:1)

您可能希望查看具有一些非常简洁功能的Guava Chars。特别是看看

  

static boolean contains(char [] array,char target)   如果target作为数组中任何位置的元素存在,则返回true。

答案 1 :(得分:1)

您可以使用String.contains()尝试此操作:

String str = "A";
if("aeiou".contains(str.toLowerCase())) {
   //is vowel
}

OR

您可以使用String.matches()尝试此操作:

String str = "A";
if(str.matches("(?i:a|e|i|o|u)"))) {
   //is vowel
}

修改

Integer n = 3;
if("1387".contains(n.toString())) {
   //is in list
}

OR

Integer n = 3;
if(n.toString().matches("1|3|8|7"))) {
   //is in list
}

答案 2 :(得分:1)

在您提出几项更改后,简单的答案是:

在将数组排除为可能的解决方案之前,我的答案是:

您可以将字符添加到数组中并使用Arrays.binarySearch()来确定字符是否在数组中:

char[] vowels = {'a', 'e', 'i', 'o', 'u'}
...
if (Arrays.binarySearch(vowels, a) >= 0) {
    ...
}

请注意,必须对数组进行排序才能使用此方法。

请注意,此方法不仅限于使用字符,还适用于其他类型。

答案 3 :(得分:0)

String arr[] = {"a", "o", "e"};
String a = "a";
if (Arrays.asList(arr).contains(a)) {
  System.out.println("true");
}

它也可以用于其他数据类型,而不仅仅是String