This is because of else if
. The else
is only assessed when a "contrary" condition occurs to the if
.
Imagine you typed 1, the first if
is:
if (numeros != 0) {
- this condition is true, soon will enter here and will not enter in no other else if
.
You can solve this by simply removing the else
of the conditions:
while (numeros != 0) {
var numeros = window.prompt("Digite os números para serem lidos")
if (numeros != 0) {
quantidade++;
}
if (numeros < 0) {
negativos++;
}
if (numeros % 2 === 0) {
pares++;
}
if (numeros / 2 == 1) {
impares++;
}
}
But this will cause him to type zero if
, and will add 1 pair, need to isolate it.
It can for example for all conditions only if the value differs from zero:
while (numeros != 0) {
var numeros = window.prompt("Digite os números para serem lidos")
if (!isNaN(numeros) && numeros != 0) { // tudo é feito somente se "numeros" for diferente de zero
quantidade++;
if (numeros < 0) {
negativos++;
}
if (numeros % 2 === 0) {
pares++;
} else { // senão for par, vai ser impar, não precisa avalisar o resto novamente
impares++;
}
}
}
Note that, in the if
was added !isNaN(numeros)
"if it’s not Nan". Nan means not a number, this to avoid trying to make calculations which values are not numbers, for example if you type a letter. Could even for a if
isolated validating this:
if (isNaN(numeros)) {
alert("Digite apenas números");
continue;
}
Here was used continue
to return the while
, without continuing all the code below, since it is not a valid number :)
var quantidade = 0
var negativos = 0
var pares = 0
var impares = 0
while (numeros != 0) {
var numeros = window.prompt("Digite os números para serem lidos")
if (isNaN(numeros)) {
alert("Digite apenas números");
continue;
}
if (numeros != 0 ) {
quantidade++;
if (numeros < 0) {
negativos++;
}
if (numeros % 2 === 0) {
pares++;
} else {
impares++;
}
}
}
alert(`Foram inseridos ${quantidade} números\n${negativos} são negativos\n${pares} são pares\n${impares} são ímpares.`)