2014-01-26 5 views
0

Я хочу проверить, что заполнено 2 из 5 полей, но я не знаю, как это сделать.Как проверить, соответствуют ли два условия из 5?

Если я кладу это в условиях, что только проверяет один из условий:

ИЛИ

  • field1 не пуст
  • field2 не пуст
  • field3 не пусто
  • Поле4 не пусто
  • Поле5 не пусто

есть более простой способ, которым следующее?

  • field1 не пуст
  • field2 не пусто

ИЛИ

  • field1 не пуст
  • field3 не пусто

ИЛИ

  • field1 не пуст
  • Field4 не пусто

ИЛИ

  • field1 не пуст
  • Field5 не пуст

ИЛИ

  • field2 не пуст
  • field3 не пусто

ИЛИ

  • field2 не пуст
  • Field4 не пуст (...)

ответ

1

2 Для петель

for(int i=0;i<5;i++){ 
    for(int j=i+1;j<5;j++){ 
     if(field[i]==true&&field[j]==true) 
     return true; 
    } 
    } 

EDIT: Вы заменяете заявления для своих нужд. И вы должны хранить поля в массиве. Кредиты zolyboy за I + 1 вещь :)

+0

j переменная должна начинаться с i не с 0 – Zolyboy

+0

нет? Зачем? он не имеет смысла –

+0

зачем тестировать поле [1] == true && field [2] == true и после этого поля [2] == true && field [1] == true? это совершенно одно и то же, если вы ставите вместо 0 i + 1, то вы не будете делать то же самое несколько раз – Zolyboy

0

В SQL я бы это так:

select if(if(field1='',0,1)+ if(field2='',0,1)+ if(field3='',0,1)+ if(field4='',0,1)+ if(field5='',0,1)=2) true else false end ... 

на другом языке, это может быть что-то вроде:

int a = (field1.equals(""))0:1; 
int b = (field2.equals(""))0:1; 
int c = (field3.equals(""))0:1; 
int d = (field4.equals(""))0:1; 
int e = (field5.equals(""))0:1; 

boolean result= (a+b+c+d+e==2)?true:false; 

С выше код вы можете легко использовать его для 3 из 5, 4 из 5, 7 из 10 условий и т. д.

Смежные вопросы