@Caeca

Как сделать два условия isNaN и a меньше или равен 0 в одном цикле?

Задание: через цикл while запрашивать у юзера число до тех пор, пока оно не будет соответствовать условиям.
Непосредственно юзера мы спрашиваем "А сколько денег Вы хотите накопить?" Соответственно, ответом должно быть число и это число должно быть больше 0 (иначе какой смысл...)

Проблема в том, что если прописывать два условия в while (isNaN(a) && a<=0) цикл завершается после 1 итерации и в результате будет NaN.

Как я понял, проблема в сравнении NaN и 0. Оно выдает False и цикл завершается.

Поэтому нацарапал что-то такое и оно в общем-то работает:
let purpose = +prompt ('Какую сумму Вы хотите накопить?', "Например, 40000")
if (isNaN(purpose)) purpose = 0;
while (purpose <= 0) {
    purpose = +prompt('Какую сумму Вы хотите накопить? Пожалуйста, вводите число без лишних знаков, пробелов и букв', "Например, 40000");
        if (isNaN(purpose)) purpose = 0;}


Но подозреваю, что есть решение элегантнее...
Поделитесь, пожалуйста, своими соображениями. Я только учусь и мне бы это очень помогло.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
let message = 'Какую сумму Вы хотите накопить?';
do {
  purpose = Number(prompt(message, "Например, 40000"));
  message = 'Какую сумму Вы хотите накопить? Пожалуйста, вводите число без лишних знаков, пробелов и букв';
} while (isNaN(purpose) || purpose <= 0);
Ответ написан
Комментировать
modelair
@modelair
unsocial
while (!+purpose )
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы