1
resposta

[Projeto] Uma Possível Solução

import java.util.Scanner;
import java.util.Random;

public class JogoAdivinha {
    public static void main(String[] args) {

        Scanner leitor = new Scanner(System.in);

        int numeroAleatorio = new Random().nextInt(100);
        int tentativas = 0;
        int tentativasMaximas = 5;

        while(tentativas < tentativasMaximas) {

            if (tentativas == 0) {
                System.out.println("Digite um número inteiro de 0 a 100. Você tem até " 
                + tentativasMaximas + " tentativas"); 
            }

            int palpite = leitor.nextInt();

            tentativas++;


            if (palpite == numeroAleatorio && tentativas == 1) {
                System.out.println("Parabéns! Você acertou de primeira!!!");
                break;

            } else if (palpite == numeroAleatorio) {
                System.out.println("Parabéns! Você acertou o número gerado em " 
                + tentativas + " tentativas"); 
                break;

            } else if (palpite > numeroAleatorio && tentativas == tentativasMaximas -1) {
                    System.out.println("Você errou! Esta é a última tentativa. Digite um número menor");

            } else if (palpite > numeroAleatorio && tentativas < tentativasMaximas -1) {
                System.out.println("Você errou! Restam " + (tentativasMaximas - tentativas) +
                        " tentativas. Digite um número menor");

            } else if (palpite < numeroAleatorio && tentativas == tentativasMaximas -1) {
                    System.out.println("Você errou! Esta é a última tentativa. Digite um número maior");

            } else if (palpite < numeroAleatorio && tentativas < tentativasMaximas -1) {
                System.out.println("Você errou! Restam " + (tentativasMaximas - tentativas) +
                        " tentativas. Digite um número maior");

            } else  {
                System.out.println("O número correto seria: " + numeroAleatorio);
            }
        }
    }
}
1 resposta

Fala, irmão!

Não sei se é esse o seu BO, mas acho que o problema neste código é que, se o usuário errar na última tentativa e digitar um número maior do que o número aleatório, a mensagem de erro será "Você errou! Esta é a última tentativa. Digite um número menor". Isso ocorre porque o operador lógico utilizado na condição que verifica o palpite do usuário é o && (AND) quando deveria ser o || (OR). Para corrigir isso, a condição deveria ser:

else if (palpite > numeroAleatorio && tentativas == tentativasMaximas - 1 ||
                    palpite < numeroAleatorio && tentativas == tentativasMaximas - 1) {
                System.out.println("Você errou! Esta é a última tentativa.");

            } else if (palpite > numeroAleatorio) {
                System.out.println("Você errou! Restam " + (tentativasMaximas - tentativas) +
                        " tentativas. Digite um número menor");
            } else if (palpite < numeroAleatorio) {
                System.out.println("Você errou! Restam " + (tentativasMaximas - tentativas) +
                        " tentativas. Digite um número maior");
            }
    }