3
respostas

If/else bugado

Olá! Tudo bem?

Percebi colocando o if/else desse desafio, na parte do else, que se acertarmos o valor do jogo o programa irá retornar as duas mensagens: "Você acertou" e " Você errou, seu número é menor que o que eu pensei", pois no if estamos descrevendo a mensagem de erro somente se o número sorteado for maior que o chute. Se o número sorteado não for maior que o chute, for igual, o programa retornará a mensagem de erro juntamente com a mensagem de acerto.

Nesse caso, não é possível o uso de if/else?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade ]

3 respostas

Olá Luana,

No código apresentado ele está imprimindo as duas mensagens quando o número é igual ao chute, pois ele está passando em ambas as validações. Primeiro ele verifica se é igual, se for verdadeiro ou não ele irá fazer a outra verificação, se o chute é maior ou não. Sendo assim se o chute for igual ao número sorteado ele ira entrar na primeira verificação e depois no else da segunda verificação, imprimindo as duas mensagens.

Uma solução seria colocar um else na primeira verificação de igualdade e dentro desse else colocar a segunda verificação de maior ou menos.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Trecho do código com a verificação lógica se o chute é igual ao número sorteado, caso não seja faz outra verificação se o chute é maior ou menor que o número sorteado.

O "bug" acontece porque ele faz o primeiro if, verifica se é igual, e se for igual, ele vai mostrar a mensagem, e vai para o outro if, e ai como ele é igual, ele não vai ser maior, e então ele cai no else. Para contornar o problema, no segundo if, você pode colocar ao invés de só if, else if, assim:

else if (chute > numeroPensado)...

Desta maneira, ele só vai entrar nesse segundo if, se o primeiro if for falso. Caso o primeiro if seja atendido, ou seja, caso o usuário acerte o número, ele não cai no segundo if, e consequentemente não cai no else.

Caramba! Deveria ter tentado arrumar o bug, mas tá valendo! Ajudou demais a discussão aqui.