Я собираюсь выйти на конечность и сказать: нет, вы не справляетесь с этим - главным образом потому, что то, что делает ваш код в настоящее время, не имеет смысла.
Одна вещьчто помогает с такими вещами, это сформулировать это на обычном английском - так что вы переходите от:
if (OnlyAbove == True
&& (Top1 > Currentnumber || Top2 > Currentnumber)
&& (Bottom1 < Currentnumber || Bottom2 < Currentnumber)
)
{
Statement
}
... к ...
if OnlyAbove
AND (CurrentNumber above at least one of the two Tops)
AND (CurrentNumber below at least one of the bottoms)
В конце концов, материалмежду этими внутренними скобками написано «Top1> current OR Top2> current» - что на самом деле не то, что вы ищете.
Что-то, что поможет - не только писать код, подобный этому, но читать по ходу дела, значит немного переборщить с переменными.Переменные удивительны , помогая вам документировать логику, поскольку вы можете назвать их очень наглядно.
Итак, представьте код, который выглядит следующим образом:
bool betweenRange1 = (Currentnumber > Bottom1) && (Currentnumber < Top1);
bool betweenRange2 = (Currentnumber > Bottom2) && (Currentnumber < Top2);
if (OnlyAbove && betweenRange1 && betweenRange2)
{
Statement
}
... thatЗаявление IF начинает выглядеть намного более читабельным - это сразу видно, к чему оно приводит.Если у вас возникли проблемы с синтаксическим анализом операторов IF, это не плохая привычка.Может быть, немного излишним ... но излишним намного лучше, чем с кодом, вы не уверены в том, что он делает: -)