Как проверить правильно что одно из полей заполнено?

252
23 мая 2017, 01:34

Не могу сообразить как правильно написать условие. У меня есть 3 editText , скажем 1, 2, 3

Так вот если 1 или 2 заполнен то 3 не нужно проверять если 1 или 2 пустой то нужно

Вот так у меня вышло

boolean isOneExist = !TextUtils.isEmpty(one);
boolean isTwoExist = !TextUtils.isEmpty(two);
if (!isOneExist || !isTwoExist) { //check editText 3 }

Как правило вводится текст в 1 или в 2 и получается так что всегда одно значение получается true другое false и я не пойму как сделать правильно

Вроде должно быть просто

Answer 1

При использовании логического ИЛИ (||) получается, что условие выполняется тогда, когда хотя бы одно поле пустое (то есть либо первое, либо второе, либо оба).

Для проверка третьего поля только в случае, когда оба первых поля пустые, нужно использовать И (&&):

if (!isOneExist && !isTwoExist)
{
    ...
}

Также можно избавиться от двойного отрицания:

boolean isOneEmpty = TextUtils.isEmpty(one);
boolean isTwoEmpty = TextUtils.isEmpty(two);
if (isOneEmpty && isTwoEmpty)
{
    ...
}
Answer 2

1 или 2 заполнен то 3 не нужно проверять, если 1 или 2 пустой - то нужно

Такого не может быть, что будет заполнен один из них, но не будет пустых.

Для наглядности ваши текст боксы могут быть:

          | пустой | заполненный
TextBox 1 |   +    |      -
TextBox 2 |   +    |      -
---------------------------------
TextBox 1 |   +    |      -
TextBox 2 |   -    |      +
---------------------------------
TextBox 1 |   -    |      +
TextBox 2 |   +    |      -
---------------------------------
TextBox 1 |   -    |      +
TextBox 2 |   -    |      +

Вы же просите это:

          | пустой | заполненный
TextBox 1 |   -    |      +
TextBox 2 |   -    |      -
---------------------------------
TextBox 1 |   -    |      -
TextBox 2 |   -    |      +

Разберем ваше условие:

1 или 2 заполнен то 3 не нужно проверять

Если 1 или 2 заполнен, то 2 или 1 будет пустой соответственно.

если 1 или 2 пустой - то нужно

Если 1 или 2 пустой - то 2 или 1 будет заполнен соответственно.

UPD:

Согласно комментарию, все же требуется проверять на 2 пустых поля. Соответственно, могу предложить повысить читаемость кода:

boolean isFirstEmpty = TextUtils.isEmpty(one);
boolean isSecondEmpty = TextUtils.isEmpty(two);
if (isFirstEmpty && isSecondEmpty ) { //check editText 3 }
Answer 3

Я бы сделал так:

    boolean empty = TextUtils.isEmpty(one);
    empty &= TextUtils.isEmpty(two);
    if (empty) { //check editText 3 }
READ ALSO
Записать во внешний XML файл

Записать во внешний XML файл

Подскажите плиз, как сделать так, чтобы записать в XML файлПопробовал так ,но файл создаётся пустой(

320
custom tag JPA Repository

custom tag JPA Repository

Как правильно создать запрос в бд с использованием JPAесть такая сущность:

234
HashMap вручную написать

HashMap вручную написать

Нужно делать свою HashMap, ну те

291
Marquee TextView без фокуса

Marquee TextView без фокуса

В ListView используется кастомный адаптер со своим оформлениемНе получается сделать текст бегущим, если не помещается в пункте из-за setFocus

199