Почему это утверждение “так близко, но так далеко” if?

StackOverflow https://stackoverflow.com/questions/318068

  •  11-07-2019
  •  | 
  •  

Вопрос

Я работаю над оператором If и хочу выполнить два условия, чтобы игнорировать цикл.Сначала это казалось простым, но теперь...Я не знаю.это моя дилемма...

if((radButton1.checked == false)&&(radButton2.checked == false))
{
    txtTitle.Text = "go to work";
}

Дилемма заключается в том, что "перейти к работе" не выполняется, если radButton1 имеет значение false, а radButton2 - значение true.Разве это не должно требовать, чтобы оба условия были ложными, чтобы пропустить оператор?

Это было полезно?

Решение

Нет, требуется, чтобы они оба были ложными для выполнения оператора.

Другие советы

Нет, требуется, чтобы оба условия были ложными, чтобы выполнить инструкцию. Прочитайте еще раз:

if ((radButton1.checked == false) && (radButton2.checked == false)) {
    txtTitle.Text = "Go to work";
}

На английском языке: " Если radButton1.checked равен false, а radButton2.checked равен false, установите txtTitle.Text для «Перейти на работу» ".

Если вы хотите пропустить оператор, когда оба условия ложны, то отрицайте свою логику, например:

if ((radButton1.checked == true) || (radButton2.checked == true)) {
    txtTitle.Text = "Go to work";
}

В переводе на английский это будет выглядеть следующим образом: " Если radButton1.checked имеет значение true ИЛИ radButton2.checked имеет значение true, то установите для текста значение «Перейти к работе» " ;. Это означает, что если какое-либо условие истинно, оно выполнит оператор или, если оба ложно, пропустит его.

Скажем, у меня есть две переменные с именами A и B

Если A и B имеют эти значения

A     true    true    false   false
B     true    false   true    false

затем эти операции возвращают

AND   true    false   false   false
OR    true    true    true    false
XOR   false   true    true    false
NAND  false   true    true    true
NOR   false   false   false   true
XNOR  true    false   false   true

Обратите внимание, что нижние 3 во второй таблице являются логическими противоположностями (т. е. они НЕ применены) верхних 3 в той же таблице.

сравнение с true (или false) совершенно не нужно:

if(!((radButton1.checked == true)&&(radButton2.checked == true))) { ... }

становится

if( !(radButton1.checked && radButton2.checked) ) { ... }

или в равной степени

if( !radButton1.checked || !radButton2.checked ) { ... }

В вашем примере он будет выполнять ТОЛЬКО код txtTitle.Text = " go to work " , если ОБА кнопки являются ложными. Таким образом, один из них является истинным, а другой - ложным, он пропустит утверждение.

Нет.Для пропуска требуется, чтобы одно из этих утверждений было false.Посмотрите на свое " если":

if (condition1 && condition2) {
    doSomething();
}

Таким образом, если condition1 ИЛИ condition2 не имеют значения true, то они не будут выполняться.

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

if(!((radButton1.checked == true)&&(radButton2.checked == true)))
{
    ...
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top