Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Problema com a Condição If

Olá, Pessoal.

Tudo bem? =D

Na última aula eu aprendi sobre a condição If, e como ela pode pode ser útil para escrever textos a depender do parâmetro dado pelo usuário. Muito animado com isso, escrevi em inglês um código bem legal sobre pontos de times de futebol; entretanto o resultado na página final não ficou como eu esperava... Ao invés de na página final ser mostrado os pontos do time, e em baixo uma mensagem positiva, negativa ou neutra, a depender do valor dos pontos, nela está sendo mostrado o número de pontos repetidos três vezes em baixo da mensagem dos pontos, e uma vez acima do título. E para ajudar, o console do navegador não está apontando nenhum erro no meu código. Alguém sabe porquê isso está acontecendo e poderia me ajudar? O código está abaixo para quem quiser ver, copiar e testar por si mesmo, e abaixo dele está uma imagem do resultado do meu código.

<meta charset="UTF-8">
  <script>
    //Pop-Ups
    alert("Welcome to the Soccer Teams Points Calculator Official Website!");
    alert("Click in 'Ok' to verify that you're a human:");
    prompt("Declare that you're a human below, to verify the functionality of your keyboard:");
    alert("Thank you!");

    //Functions, Variables and Functionalities in general
    function title(yourTitle) {
        document.write("<h1>" + yourTitle + "</h1>");
    }

    function line() {
        document.write("<hr>");
    }

    function write(yourText) {
        document.write(yourText)
    }

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

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

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

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

    var victories = parseInt(prompt("Please, write the number of victories from your soccer team:"));
    var ties =  parseInt(prompt("Please, write the number of ties from your soccer team:"));

    function soccerPoints() {
        totalPoints = document.write( (victories*3) + ties );
        return "<big>" + totalPoints + "</big>"
    }

    var finalPoints = soccerPoints();

    var lastYearScore = 78

    function comparePoints() {
        if (finalPoints > lastYearScore) {
            jumpLine1();
            document.write("Congratulations! Your team has been better this year then it was last year.");
        }

        if (finalPoints < lastYearScore) {
            jumpLine1();
            document.write("Uh oh. Unfortunately, your team has performed better last year than in this year.");
        }

        if (finalPoints == lastYearScore) {
            jumpLine1();
            document.write("Well... Your team has perfomed the same as last year.");
        }
    }

    //Program
    title("Welcome to the Soccer Teams Points Calculator Official Website!");
    line();
    jumpLine();
    write("<big>" + "The points of your soccer team is: " + "</big>");
    soccerPoints();
    comparePoints();
    jumpLine3();
    document.write("<h2>Facing Problems?</h2>");
    write("Click on the button below, talk with our support and have your problem solved!");
    jumpLine2();
    document.write("<a href=https://www.youtube.com/channel/UCaoTsijoAZvN-yYEsEvgQjQ><button type=support name=support>support</button></a>");
    jumpLine1();
    line();
  </script>

Resultado do código:

Obrigado.

4 respostas

Como sua função utiliza 2 valores, na declaração da função você precisa definir como paramêtro os valores que são utilizados dentro dela.

Por exemplo:

 function comparePoints(finalPoints, lastYearScore) {
        if (finalPoints > lastYearScore) {
            jumpLine1();
            document.write("Congratulations! Your team has been better this year then it was last year.");
        }

        if (finalPoints < lastYearScore) {
            jumpLine1();
            document.write("Uh oh. Unfortunately, your team has performed better last year than in this year.");
        }

        if (finalPoints == lastYearScore) {
            jumpLine1();
            document.write("Well... Your team has perfomed the same as last year.");
        }
    }

Assim quando você for utilizar a função, você chama ela passando os valores que ela espera receber:

// Passando valores por variáveis 
comparePoints(finalPoints, lastYearScore);

// Passando valores diretamente
comparePoints(102, 78);

Olá, Cleonor.

Tudo bem? =D

Muito obrigado pela ajuda, não tinha a menor ideia do porque isto estava acontecendo, eu achei que definir estes parâmetros com seus valores nas varíaveis acima já era suficiente; aliás, porquê isso não é suficiente, é porque eu adicionei uma função, no caso a if, dentro de outra?

Agora, apesar de 95% do problema já ter sido resolvido, o número dos pontos ainda está aparecendo acima do título. Você saberia me dizer o motivo do porque isso está ocorrendo? O código segue o mesmo, a única alteração foi que adiconei os dois parâmetros à função.

Segue a imagem:

Imagem do problema que está ocorrendo:

Obrigado.

Olá, Cleonor!

Tudo bem? =D

Vim aqui novamente porque aparentemente consegui resolver o problema do número em cima do título, não sei o que estava ocasionando aquilo, mas equanto tentava otimizar meu código, botando várias funções e váriaveis separadas em uma só função, consegui tirá-lo. Entretanto, a condição If deixou de funcionar novamente, ainda que dessa vez os parâmetros estejam definidos dentro da função. Você poderia me ajudar? =D

O código ficou da seguinte forma:

<meta charset="UTF-8">
  <script>
    //Pop-Ups
    alert("Welcome to the Soccer Teams Points Calculator Official Website!");
    alert("Click in 'Ok' to verify that you're a human:");
    prompt("Declare that you're a human below, to verify the functionality of your keyboard:");
    alert("Thank you!");

    //Functions, Variables and Functionalities in general
    function title(yourTitle) {
        document.write("<h1>" + yourTitle + "</h1>");
    }

    function line() {
        document.write("<hr>");
    }

    function write(yourText) {
        document.write(yourText)
    }

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

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

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

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

    function soccerPoints() {
        var lastYearScore = 78
        var victories = parseInt(prompt("Please, write the number of victories from your soccer team:"));
        var ties =  parseInt(prompt("Please, write the number of ties from your soccer team:"));

        var totalPoints = document.write( (victories*3) + ties );

        return "<big>" + totalPoints + "</big>"

        jumpLine1();

        if (totalPoints > lastYearScore) {
            jumpLine1();
            document.write("Congratulations! Your team has been better this year then it was last year.");
        }

        if (totalPoints < lastYearScore) {
            jumpLine1();
            document.write("Uh oh. Unfortunately, your team has performed better last year than in this year.");
        }

        if (totalPoints == lastYearScore) {
            jumpLine1();
            document.write("Well... Your team has perfomed the same as last year.");
        }
    }

    //Program
    title("Welcome to the Soccer Teams Points Calculator Official Website!");
    line();
    jumpLine();
    write("<big>" + "The points of your soccer team is: " + "</big>");
    soccerPoints();
    jumpLine3();
    document.write("<h2>Facing Problems?</h2>");
    write("Click in the button below, talk with our support and have your problem solved!");
    jumpLine2();
    document.write("<a href=https://www.youtube.com/channel/UCaoTsijoAZvN-yYEsEvgQjQ><button type=support name=support>support</button></a>");
    jumpLine1();
    line();
  </script>

E aqui está uma imagem do resultado do meu código:

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeObrigado.

solução!

Olá, pessoal.

Tudo bem? =D

Venho aqui falar com vocês hoje porque consegui resolver o meu problema! Não pude identificar a causa exata do porque o 95 estava indo para cima do título, e nem porque a condição if não estava funcionando, mas após olhar com um pouquinho mais de atenção, e reescrever o código, percebi uma anomalia. A minha variável "totalPoints" que era comparada com "lastYearScore" pela condição if não recebia apenas um número, para que a comparação pudesse ser realizada, mas uma string com um número. E isso estava impedindo que a condição if funcionasse, já que ela sempre seria entendida como falsa pelo java pois "Seus pontos são 95" é diferente de "95". Bom, é isso pessoal, espero que esse meu tópico possa ajudar outras pessoas que estão passando pelo mesmo problema. Abaixo deixarei o meu código reescrito, atualizado e funcionando para que possam ver como o problema foi solucionado na prática.

<meta charset="UTF-8">
  <script>
    //Pop-Ups
    alert("Welcome to the Soccer Teams Points Calculator Official Website!");
    alert("Click in 'Ok' to verify that you're a human:");
    prompt("Declare that you're a human below, to verify the functionality of your keyboard:");
    alert("Thank you!");

    //Functions, Variables and Functionalities in general
    function title(yourTitle) {
        document.write("<h1>" + yourTitle + "</h1>");
    }

    function line() {
        document.write("<hr>");
    }

    function write(yourText) {
        document.write(yourText)
    }

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

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

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

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

    function soccerPoints() {
        var victories = prompt("How much victories has your team acquired in this year?");
        var ties = parseInt(prompt("How much ties has your team had in this year?"))
        var finalPoints = (victories*3) + ties;
        var lastYearPoints = 78
        write("<big><b>" + finalPoints + "</b></big>");

        if (finalPoints > lastYearPoints) {
            jumpLine1();
            write("Congratulations! Your team has acquired more points this year than in the last one.");
        }

        if (finalPoints < lastYearPoints) {
            jumpLine1();
            write("Oh! Your team has acquired less points this year than in the last one.");
        }

        if (finalPoints == lastYearPoints) {
            jumpLine1();
            write("Well... Your team has acquired the same number of points as last year.");
        }
    }

    //Program
    title("Welcome to the Soccer Teams Points Calculator Official Website!");
    line();
    jumpLine();
    write("<big>" + "The points of your soccer team is: " + "</big>");
    soccerPoints();
    jumpLine3();
    document.write("<h2>Facing Problems?</h2>");
    write("Click in the button below, talk with our support and have your problem solved!");
    jumpLine2();
    document.write("<a href=https://www.youtube.com/channel/UCaoTsijoAZvN-yYEsEvgQjQ><button type=support name=support>support</button></a>");
    jumpLine1();
    line();
  </script>

Até mais!