Почему этот оператор IF возвращает false?

Почему бы не использовать для - каждая конструкция? (Я не использовал Java в некоторое время, но это существует в C#, и я - вполне уверенный Java 1.5, имеет это также):

List<String> names = new ArrayList<String>();
names.add("a");
names.add("b");
names.add("c");

for (String name : names)
    System.out.println(name.charAt(0));
6
задан Peter Mortensen 20 November 2009 в 16:24
поделиться

10 ответов

Я думаю, вы перепутали логические операторы. Вы ищете

if (txtBox1.Text.Trim() != string.Empty || txtBox2.Text.Trim() != string.Empty )
{
     // Do something
}
24
ответ дан 8 December 2019 в 02:08
поделиться

Вам следует заменить && на || . В настоящее время код в блоке if будет выполняться только в том случае, если в обоих текстовых полях есть текст.

11
ответ дан 8 December 2019 в 02:08
поделиться

Те, кто указал, что вам нужны || вместо && правы. Если вы предпочитаете &&, вы также можете использовать:

if (!(txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty))
{
     // Do something
}

Разница чисто эстетическая, но сводится к проверке (на английском языке): « неверно , что оба текстовых поля пусты» в отличие от « Это правда, что по крайней мере одно текстовое поле не пусто ". То же значение, но другой способ выразить это.

Для записи, в вашем первоначальном вопросе это было так: «Верно, что оба текстовых поля не пусты».

6
ответ дан 8 December 2019 в 02:08
поделиться
if (txtBox1.Text.Trim() != string.Empty || txtBox2.Text.Trim() != string.Empty )
{
     // Do something
}

Вы используете && , для чего ОБЯЗАТЕЛЬНО из них НЕ пусто. Вы должны использовать || (ИЛИ), чтобы получить желаемый результат.

1
ответ дан 8 December 2019 в 02:08
поделиться

Я выделил BothBoxesEmpty в отдельную переменную, чтобы сделать его более читабельным ... в противном случае все скобки превращаются в нечитаемый беспорядок. Вы можете объединить два оператора, если выберете:

bool BothBoxesEmpty = string.IsNullOrEmpty(TextBox1.Text.Trim()) &&
                      string.IsNullOrEmpty(TextBox2.Text.Trim());
if (!BothBoxesEmpty)
{
    /* Do your stuff */
}

Вы также можете легко заменить string.IsNullOrEmpty на TextBox1.Text.Trim () == string.Empty as TextBox1.Text всегда будет возвращать строку (пустую или нет) и никогда не вернет null .

2
ответ дан 8 December 2019 в 02:08
поделиться

Вы хотите || вместо &&.

3
ответ дан 8 December 2019 в 02:08
поделиться

Может быть проще понять:

if (!(txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty ))
{
     // Do something
}
0
ответ дан 8 December 2019 в 02:08
поделиться

Если вы используете метод, вы также можете сделать что-то вроде этого:

 if (txtBox1.Text.Trim() == string.Empty && txtBox2.Text.Trim() == string.Empty )
      return;
 //Do Something
0
ответ дан 8 December 2019 в 02:08
поделиться

Вы можете сделать его более кратким, объединив строки, затем тестирование:

if ((txtBox1.Text.Trim() + txtBox2.Text.Trim()) != string.Empty )
{
    // Do something
}

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

0
ответ дан 8 December 2019 в 02:08
поделиться

Это напомнило мне историю, которую я слышал о младшем кодировщике, которому было сказано ввести правила расчета страховых выплат, где «все моложе 18 и старше 65 лет» этого не делали. квалифицироваться. Поэтому он закодирован как:.

if (age < 18 and age > 65) ...

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

0
ответ дан 8 December 2019 в 02:08
поделиться