Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Solução sugerida apresenta uma falha

No if (tentativas == 5), caso acerte o numero na tentativa número 5, vai imprimir:

Parabéns, você acertou o número em 5 tentativas! Você não conseguiu adivinhar o número em 5 tentativas. O número era xxx

O correto é este If ficar dentro do bloco while, certo?

1 resposta
solução!

Olá Alexandre, tudo bem?

Realmente, a solução apresentada pode apresentar uma falha. Se o usuário acertar o número na quinta tentativa, a mensagem de erro ainda será exibida, o que não é o comportamento desejado.

Sobre sua pergunta, sim, o if deve estar dentro do bloco while, para que a verificação seja feita a cada tentativa. Dessa forma, caso o usuário acerte o número em qualquer uma das tentativas, a mensagem de sucesso será exibida e o loop será interrompido.

Segue um exemplo de como ficaria o código com essa alteração:

int tentativas = 0;
int numero = gerador.nextInt(101);

while (tentativas < 5) {
    int palpite = scanner.nextInt();
    tentativas++;

    if (palpite == numero) {
        System.out.printf("Parabéns, você acertou o número em %d tentativas!", tentativas);
        break;
    } else {
        System.out.println("Você errou!");
    }
}

if (tentativas == 5) {
    System.out.printf("Você não conseguiu adivinhar o número em 5 tentativas. O número era %d", numero);
}

Espero ter ajudado e bons estudos!