2014-10-06 3 views
-3

Проверьте, ИНТ (1, 3, 8, 7)Java - короче код для многократного или заявления

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

можно укоротить "если-заявление" на что-то вроде:

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

Без использования массива, просто заинтересованного в написании этого с меньшим количеством кода.


Первая версия (только для справки):

// Количество гласных (а, о, е, и, я)

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

можно укоротить " if-statement "примерно на:

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

Я знаю, что это не действительная Java, но я хотите знать, есть ли другой способ сделать это (без цикла через «гласные-массивы»).

+1

Используйте регулярные выражения, чтобы сократить регулярное выражение код –

+0

? 'Строка # contains'? – MadProgrammer

+0

Хорошая идея, но гласный материал - всего лишь пример, предполагайте наличие чисел вместо строк. Я ищу общий способ сокращения нескольких или/и утверждений. – AddingColor

ответ

1

После нескольких изменений в вас вопрос простой ответ: Нет.

Мой ответ перед исключением массивов в качестве возможного решения является:

Вы можете добавить символы в массив и использовать Arrays.binarySearch(), чтобы определить, является ли символ в массиве:

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

Обратите внимание, что ваш массив должен быть отсортирован для использования этого метода.

Обратите внимание также, что этот метод не ограничивается работой с символами, но также работает с другими типами.

1

Возможно, вы захотите взглянуть на Guava Chars, который имеет некоторые довольно аккуратные функции. Особенно взглянуть на

статической булево содержит (Char [] массив, целевой символ) возвращает истину, если мишень присутствует в качестве элемента массива в любой точке.

1

Вы можете попробовать это с String.contains():

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

ИЛИ

Вы можете попробовать это с String.matches():

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

EDIT

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

ИЛИ

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

Это решение не будет работать ни с чем другим, кроме символов (что было продолжением вопроса во втором или третьем редактировании). –

+1

@UwePlonus, я обновил сообщение – Arvind

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

Он также может быть полезным с другими типами данных не только строковые