Потому что Number так делает (всё что не число становится 0).
В твоём случае нужно проверять наверное так:
Код:
$Variable=InputBox("","Введите количество.");Нажата кнопка отменыIf@error=1ThenExit;Проверяем введённое числоSelect;Указанно НЕ числоCaseNotStringIsInt($Variable)MsgBox(0,"","Что то пошло не так.");Указанно 0Case$Variable='0'MsgBox(0,"","Вы получили 0 опыта");Указанно число больше чем 0CaseElseMsgBox(0,"","Вы получили +"&$Variable&" опыта")EndSelect
А как понять в данном случае, что я неправильно использую Switch ... EndSwitch?
Код же вроде прост, как лопата.
Об которую я ломаю голову и просто не пойму, в чём проблема.
Конкретнее, я не понимаю, почему эти 2 конструкции отличаются.
Логика ведь в них одинаковая.
Пока я пришёл к выводу, что здесь какая то проблема в операторе (>=)
Код:
$variable=InputBox("","Введите количество."); Если нажата кнопка CANCELIf@error=1ThenExit; Перевод строки в число. Текст заменяется числом 0.$variable=Number($variable)Switch$variable; !!! Тут вот проблема с оператором (>=). При вводе нуля, происходит прыжок на второй кейс.Case$variable>=0MsgBox(0,"","Вы получили +"&$variable&" опыта")CaseElseMsgBox(0,"","Что то пошло не так.")EndSwitch
A тут всё работает.
Код:
$variable=InputBox("","Введите количество."); Если нажата кнопка CANCELIf@error=1ThenExit; Перевод строки в число. Текст заменяется числом 0.$variable=Number($variable)Switch$variableCase$variable=0And$variable>0MsgBox(0,"","Вы получили +"&$variable&" опыта")CaseElseMsgBox(0,"","Что то пошло не так.")EndSwitch
Значение или выражение, возвращающее значение. Далее это значение сравнивается со значением(ями) или диапазоном значений в каждом Case до тех пор, пока не будет найдено совпадение. Это выражение вычисляется только один раз.
Получается что, условие >= 0 в моём случае работает просто как > 0, а проверка на = 0 как бы не срабатывает,
из за чего работает только вариант, когда условия = 0 и > 0 разделены?
проверяет условие, не ровняется ли $variable значению в Case, а это $variable >= 0, т.е если оно больше или ровно 0, то будет True, иначе False, с одним из этих значений будет сравниваться сама $variable.