1
resposta

Exercicio Jogo De Adivinhação

Esse deu trabalho ....

Vou postar duas versões do trabalho. A primeira, que fiz sozinho até dar certo, e a outra, que refiz perguntando ao chat gpt como melhorar o excesso de if, que tava estranho:

VERSÃO 1

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

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

        Scanner leitura = new Scanner(System.in);

        int palpite = 0;
        int tentativa = 0;
        int numeroAleatorio = new Random().nextInt(100);
        
        //print apenas para teste
        // System.out.println(numeroAleatorio); 

        for (int i=0; i<5;i++)
        {
            System.out.println("Digite o seu palpite");
            palpite = leitura.nextInt();
            tentativa++;

            if (numeroAleatorio>palpite)
            {
                System.out.println("O número sorteado é maior do que o seu palpite");
                System.out.println("Tentativas restantes: " + (5-tentativa));
            }
            if (numeroAleatorio<palpite)
            {
                System.out.println("O número sorteado é menor do que o seu palpite");
                System.out.println("Tentativas restantes: " + (5-tentativa));
            }
            if (numeroAleatorio == palpite)
            {
                System.out.println("Você ACERTOU!!! Parabéns!");
                System.out.println("***** Fim de jogo *****");
                return;
            }
            if (tentativa == 5)
            {
                System.out.println("Você PERDEU. Mais sorte na próxima!");
                System.out.println("***** Fim de jogo *****");
                return;
            }

        }
    }
}

VERSÃO FINAL

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

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

        Scanner leitura = new Scanner(System.in);

        int palpite = 0;
        int tentativa = 0;
        int numeroAleatorio = new Random().nextInt(100);

        //print apenas para teste
        // System.out.println(numeroAleatorio); 

        for (int i=0; i<5;i++)
        {
            System.out.println("Digite o seu palpite");
            palpite = leitura.nextInt();

            if (numeroAleatorio == palpite) {
                System.out.println("Você ACERTOU!!! Parabéns!");
                System.out.println("***** Fim de jogo *****");
                return;

            } else if (numeroAleatorio > palpite) {
                System.out.println("O número sorteado é maior do que o seu palpite");

            } else {
                System.out.println("O número sorteado é menor do que o seu palpite");
            }

            System.out.println("Tentativas restantes: " + (4-i));

        }

            System.out.println("Você PERDEU. O número era: " + numeroAleatorio);
            System.out.println("***** Fim de jogo *****");

        }
    }
1 resposta

Oi, Diogo! Como vai?

Gostei de ver como você resolveu o problema por conta própria antes de buscar melhorias. O uso do else if na versão final deixou o código mais limpo e fácil de entender. Ótima iniciativa de revisar e refatorar!

Uma dica interessante para o futuro é usar o break quando quiser sair do for sem usar return, o que pode deixar o fluxo mais claro em alguns casos. Veja este exemplo:


for (int i = 0; i < 5; i++) {
    if (numeroAleatorio == palpite) {
        System.out.println("Acertou!");
        break;
    }
}

Esse break encerra o laço sem sair do método.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!