2
respostas

Função ParseInt

Pessoal, o exemplo da aula era o de inserir valores para calcular a quantidade de pontos que o time conseguiu ((vitória*3)+empates)

Porém, faltou uma coisa. Se no prompt o usuário digita um texto, ele invalida o cálculo. Como que eu posso criar um código onde "force" o usuário a digitar apenas números. Exemplo:

Prompt <> numero; então: alert ("digite apenas números) var vitorias = parseInt(prompt("inserir número de vitórias "));

meu código (obs: tentei um exemplo da net só que não funcionou)

function pulaLinha() {
       document.write("<br><br>");
}

function mostra(frase) {

    document.write(frase);
    pulaLinha();
}

var vitoria = parseInt(prompt("informe o numero de vitória "));

function checkNumber(vitoria) {
var regra = /^[0-9]+$/;

if (valor.match(vitoria)) {
    alert("Numero: "+valor);
}
else {
    alert("Permitido somente número inteiro positivo!");
}

}

var empate = parseInt(prompt("informe o número de empates "));
var pontos = (vitoria*3) + empate;

mostra("Seu time possuí " + pontos + " pontos!");
2 respostas

Olá Fabio, tudo bem com você?

Nesse primeiro momento é difícil mesmo fazer a validação do que o usuário está digitando, então não precisa ser o nosso foco :)

Com o passar dos estudos vamos aprendendo maneiras de conseguir fazer essa validação de uma maneira mais fácil! Mas vou te dar um exemplo bem simples que poderíamos fazer:

  • Vou criar uma variável que vai servir para garantir que as informações estão corretas e vai começar como falso:

var valido = false

  • Agora vou criar uma função que verifica se o que o usuário digito de fato é um número:
function validaResposta() {

No javascript temos um valor chamado NaN que significa "Not a Number", sempre que damos parseInt em um texto ele diz que a nossa variável vale NaN

Então para verificar se o usuário digitou um número nós temos uma função chamada isNaN que significa: "Não é um número?":

    function validaResposta() {

        if(Number.isNaN(vitoria)){
            alert("O valor deve ser um número!");
            return;
        }

Então estou criando uma condição, se o valor digitado não for um número, o Number.isNaN(vitoria) irá ser true e podemos dizer para o usuário que ele digitou um número inválido e saímos da função com o return

Vou fazer isso para a quantidade de vitórias e empates:

   function validaResposta() {

        if(Number.isNaN(vitoria)){
            alert("A quantidade de vitórias deve ser um número")
            return;
        }

        if(Number.isNaN(empate)){
            alert("A quantidade de empates deve ser um número");
            return;
        }

        valido = true;

    }

Veja que se o usuário digitou tudo corretamente ( não entrou em nenhum if ), eu mudo aquela nossa variável inicial valido para true

Agora só precisamos de um bloco de repetição para ficar validando:

    while(valido == false) {
        var vitoria = parseInt(prompt("informe o numero de vitória "));
        var empate = parseInt(prompt("informe o número de empates "));
        validaResposta();
    }

    var pontos = (vitoria*3) + empate;
    mostra("Seu time possuí " + pontos + " pontos!");

Então iremos entrar nesse while na primeira vez porque a nossa variável começa como false, vamos pegar o que ele digitou e chamar a função validaResposta(), se algum dos valores for invalido iremos executar tudo que está dentro do while novamente até que todos valores estejam corretos :)

Fique tranquilo se não alguma parte não ficou muito clara, ao longo dos cursos iremos cada vez mais fazer validações e com o tempo vai ficando cada vez mais de boa :)

Conseguiu compreender? Estou a disposição para qualquer coisa :)

Abraços e Bons Estudos!

Fala, Fabio ! Tudo bem, amigão?

Podemos criar uma função para testar se os números digitados serão inteiros. Dei o nome de "promptInt" aleatóriamente. Poderia sem um nome qualquer.

    function promptInt(mensagem, tenteNovamente) {
        var msg = mensagem;
        while (true) {
            var ret = parseInt(prompt(msg));
            if (!isNaN(ret)) return ret;
            msg = tenteNovamente;
        }
    }

Logo depois estruturamos como vamos mostrar no navegador

    var vitoria = promptInt("informe o numero de vitória.", "Permitido somente número inteiro positivo!\nDigite novamente o número de VITÓRIAS!");
    var empate = promptInt("informe o numero de empates.", "Permitido somente número inteiro positivo!\nDigite novamente o número de EMPATES!");

A primeira parte vai pedir que o número seja digitado e que será verificado se é um número inteiro na função

var vitoria = promptInt("informe o numero de vitória.",

depois de verificado trará essa segunda parte

"Permitido somente número inteiro positivo!\nDigite novamente o número de VITÓRIAS!");

Logo depois, partiremos para a variável empate e fazemos a mesma trajetória

var empate = promptInt("informe o numero de empates.", "Permitido somente número inteiro positivo!\nDigite novamente o número de EMPATES!");

O código completo ficará dessa forma

<meta charset="UTF-8">

<script>
    function pulaLinha() {
        document.write("<br><br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function promptInt(mensagem, tenteNovamente) {
        var msg = mensagem;
        while (true) {
            var ret = parseInt(prompt(msg));
            if (!isNaN(ret)) return ret;
            msg = tenteNovamente;
        }
    }

    var vitoria = promptInt("informe o numero de vitória.", "Permitido somente número inteiro positivo!\nDigite novamente o número de VITÓRIAS!");
    var empate = promptInt("informe o numero de empates.", "Permitido somente número inteiro positivo!\nDigite novamente o número de EMPATES!");
    var pontos = (vitoria * 3) + empate;

    mostra("Seu time possuí " + pontos + " pontos!");

</script>

Espero ter ajudado, Fabio!!!

Bons estudos e vamos em frente!!!