Почему это утверждение “так близко, но так далеко” if?
Вопрос
Я работаю над оператором 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)))
{
...
}