1
resposta

Iniciando os trabalhos em While

O Exercicio pediu o seguinte: "Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido." Cheguei ate aqui. O que eu errei?

<meta charset="UTF-8">
<script>
   var nota = parseInt(prompt("Diga uma nota de 0 a 10"));


while (nota > 10) {alert(Esse valor não é válido. Tente novamente.);}
  {nota = parseInt(prompt("Diga uma nota de 0 a 10" ))};
</script>
1 resposta

Vamos lá,

No seu código está pedindo a entrada de uma nota dentro e fora do while, não é necessário, apenas uma vez dentro do While já deve resolver.

O seu while também só está verificando se a nota é maior que 10, então se eu adicionar um número menor que 0 ele deve aceitar também, sem contar que dentro do while só tem o alert, não tem a verificação, então vai ficar em um loop eterno se colocar um valor inválido.

O que eu faria:

var nota = -1; //Apenas para inicializar

while (nota < 0 || nota > 10) { //Aqui eu verifico se a nota é menor que 0 ou maior que 10, para evitar números negativos
    nota = parseInt(prompt("Diga uma nota de 0 a 10" )) //Aqui será feita a entrada da nota pelo usuário
    if (nota >= 0 && nota <= 10) { //Aqui eu verifico também se a nota é válida para poder quebrar o fluxo do while e não aparecer o erro
        break;
    }
    alert("Esse valor não é válido. Tente novamente.") //Se não foi validado no if anterior ele vai aparecer o erro
}
</script>