Не понимаю, почему не работает проверка на число
По идеи, программа должна проверять два числа на то что они числа (по отдельности), а потом сравнить их. Но всё зацикливается, почему?
const firstNumber = prompt("Введите первое число: ");
while (isNumber(firstNumber) === 0) {
const firstNumber = prompt("Введите первое число: ");
}
const secondNumber = prompt("Введите второе число: ");
while (isNumber(firstNumber) === false) {
const secondNumber = prompt("Введите второе число: ");
}
if (firstNumber > secondNumber) {
alert("Первое число больше второго");
};
if (firstNumber < secondNumber) {
alert("Второе число больше первогоо");
};
if (firstNumber == secondNumber) {
alert("Числа равны");
}
function isNumber(n) {
return isNaN(parseFloat(n)) && isFinite(n);
}
Ответы (2 шт):
Автор решения: qRi
→ Ссылка
Уберите с вашего кода бесконечные циклы, тогда не будет зацикливаться
const checkNumbers = () => {
const one = prompt("Введите первое число: ");
const two = prompt("Введите второе число: ");
if ( one > two )
alert('1 > 2')
else if ( one < two )
alert('1 < 2')
else if ( one == two ) alert('1==2')
//мы получили результат сравнения первой пары чисел, проведем еще одну проверку
checkNumbers()
}
checkNumbers()
function isNumber(n) {
return isNaN(parseFloat(n)) && isFinite(n);
}
Автор решения: vsemozhebuty
→ Ссылка
У вас тут сразу несколько проблем.
- Не повторяйте
constилиletвнутри блока, так вы создаёте новую переменную с видимостью только внутри блока, а не переопределяете прежнюю. - Используйте let, если будете переопределять переменную.
- Поскольку функция
isNumber(n)возвращает логическое значение, строгое сравнение его с нулём всегда будет ложным. - Две части сравнения в
isNumber(n)противоречат друг другу. - Второй раз вы опять проверяете первое число.
let firstNumber = prompt("Введите первое число: ");
while (!isNumber(firstNumber)) {
firstNumber = prompt("Введите первое число: ");
}
let secondNumber = prompt("Введите второе число: ");
while (!isNumber(secondNumber)) {
secondNumber = prompt("Введите второе число: ");
}
firstNumber = Number(firstNumber);
secondNumber = Number(secondNumber);
if (firstNumber > secondNumber) {
alert("Первое число больше второго");
};
if (firstNumber < secondNumber) {
alert("Второе число больше первогоо");
};
if (firstNumber == secondNumber) {
alert("Числа равны");
}
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}